Java注解(annontation)简说
2017-07-27 00:00
190 查看
摘要: 注解参数简介
它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。
Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
@Deprecated: 建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
@SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭。
@interface是一个关键字,在设计annotations的时候必须把一 个类型定义为@interface,而不能用class或interface关键字。
①TYPE(类型 TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上)
②FIELD(应用在属性)
③METHOD(应用在方法)
④PARAMETER(应用在参数)
⑤CONSTRUCTOR(应用在构造函数)
⑥LOCAL_VARIABLE(应用在局部变量)
⑦ANNOTATION_TYPE(应用在注解)
⑧PACKAGE(应用在包)
注:如果Annotation类中没有加@Target注解,则默认可以作用在以上所有。
此注解意义就是指定注解的应用范围。
①RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
②RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
③RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用
一般默认设置为: @Retention(RetentionPolicy.RUNTIME) ,这样在程序运行时候就能发现到这个注解。
默认情况下,javadoc是不包括注解的,但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中。
例如:
1、写注解类
2、写应用类
3、生成doc,查看显示效果
Java注解简说
1、Annontation简介:
Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。
Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
2、默认的三个Annotation类型:
@Override: 只能用在方法之上的,用来告诉别人这一个方法是改写父类的。@Deprecated: 建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
@SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭。
3、怎样设计自己的Annotation
1、例子:
package annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //作用范围 @Target(ElementType.TYPE) //RetentionPolicy.RUNTIME这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射 @Retention(RetentionPolicy.RUNTIME) //注解doc文档信息 @Documented public @interface Description { String value(); }
@interface是一个关键字,在设计annotations的时候必须把一 个类型定义为@interface,而不能用class或interface关键字。
2、注解简介:
@Target:
@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上①TYPE(类型 TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上)
②FIELD(应用在属性)
③METHOD(应用在方法)
④PARAMETER(应用在参数)
⑤CONSTRUCTOR(应用在构造函数)
⑥LOCAL_VARIABLE(应用在局部变量)
⑦ANNOTATION_TYPE(应用在注解)
⑧PACKAGE(应用在包)
注:如果Annotation类中没有加@Target注解,则默认可以作用在以上所有。
此注解意义就是指定注解的应用范围。
@Retention:
@Retention(保留)注解说明,这种类型的注解会被保留到哪个阶段. 有三个值:①RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
②RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
③RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用
一般默认设置为: @Retention(RetentionPolicy.RUNTIME) ,这样在程序运行时候就能发现到这个注解。
@Documented:
@Documented 注解表明这个注解应该被 javadoc工具记录.默认情况下,javadoc是不包括注解的,但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中。
例如:
1、写注解类
@Target(ElementType.METHOD) // RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射 @Retention(RetentionPolicy.RUNTIME) // 注解doc文档信息 @Documented() public @interface UseDocumented { String Document(); }
2、写应用类
public class UseAnnotations { public static void main(String arg[]) { new UseAnnotations().doSomeRetention(); new UseAnnotations().doSomeDocumented(); } @UseDocumented(Document = "保留注解信息测试") public void doSomeRetention() { System.out.printf("测试注解类型 'Retention'"); } @UseDocumented(Document = "Hello document") public void doSomeDocumented() { System.out.printf("测试注解类型 'Documented'"); } }
3、生成doc,查看显示效果
相关文章推荐
- Java注解(annontation)
- 小白实验室-Java:注解
- 深入理解Java:注解(Annotation)--注解处理器
- 笔记——Java之注解
- 转帖 java6的@override注解与java5的不同之处 收藏
- 关于 java注解 问题
- Java 注解 Annotation
- Java基础加强二注解、泛型、类加载器、代理类
- Java注解之常用注解
- [译]Java并发:@GuardedBy----Android中的注解
- 深入理解Java:注解(Annotation)自定义注解入门
- 深入理解Java:注解(Annotation)自定义注解入门
- java的注解
- Java注解annotation用法和自定义注解处理器
- 进击的Android工程师之Java基础: 注解
- [置顶] Java 使用动态代理来动态修改注解值
- 深入理解Java:注解(Annotation)基本概念
- 深入理解Java:注解(Annotation)--注解处理器
- Java注解机制之Spring自动装配实现原理
- Java注解一谈