Java注解
2016-03-15 12:13
453 查看
注解
类似于批注,是对源代码加入描述;JDK5.0引入,不同于注释(注释在编译时被忽略)。
注释,就是说明。Java的注释,可以附加在package(包)、class(类)、method(成员变量)
和field (成员变量)等上面,相当于给它们添加了额外的辅助信息。
其原理是通过反射机制/反省。通过反射可以获得类、对象的信息(元数据)。
常见的Java内建注释
@Deprecated用于修饰已经过时的方法。
@Override用于修饰此方法覆盖了父类的方法(而非重载)。加上后编译器强制检查方法名。
@SuppressWarnings用于通知java编译器禁止特定的编译警告。
Annotation工作方式
annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,
它会反过来对正在运行的程序语义有所影响。annotation可以从源文件、class文件或者以在
运行时反射的多种方式被读取。
当然annotation在某种程度上使javadoc tag更加完整。一般情况下,如果这个标记对
java文档产生影响或者用于生成java文档的话,它应该作为一个javadoc tag;否则将作为一个annotation。
Annotation使用方法
1、interface 关键字前有@。
2、每个方法声明定义为一个元素。
3、方法声明不能包含有参数和throws子句。
4、方法返回类型只能是: 基本类型, String, Class,enums, annotations, 以及它们的数组。
5、方法可以定义缺省值。
自定义注解
目标:@Target 它用来修饰谁?
ElementType
类型
字段
方法
参数
保留规则 @Rectention(此括号可选3个值)设置该自定义注解保留的策略
用关键字@interface定义一个注解标记,使用@interface关键字实际上的意思就是
该接口继承自java.lang.annotation.Annotation接口。
如:
import java.lang.annotation.*;
@Target(ElementType.METHOD) //设置目标;即该 自定义注解用于修饰谁
@Retention(RetentionPolicy.CLASS)//设置保留策略;即 该自定义注解保留到编译后的字节码文件中
public @interface Path {
//类型 该注释属性名();
String name() default ""; //name属性值默认为""
/**
* 是否可用,默认可用
* 意思就是在Path注解中可以含有属性名为ebable,此属性的类型是boolean类型。客户端使用的时候可以根据需要自己指定相关的属性值。如果客户端不指定值,默认值是true
*/
boolean enable() default true;
}
元注释,也是一种注释,只不过有其特殊性,具体表现在它是一种针对注释类型的注释。Java中共有4种元注释,分别为Retention、Target、Documented和Inherited。
@Retention(RetentionPolicy.RUNTIME)
加载在VM中,在运行时进行映射(注解的生命周期出现在哪里看源码),将使用该注解类的信息值保持到真正的客户端运行时环境。
@Target(ElementType.METHOD)
限定此annotation只能标示方法,描述元注解可以出现的地方
@Target注解,它代表着注解的修饰范围,类型是java.lang.annotation.ElementType枚举类型。
public enum ElementType {
TYPE,//可以修饰类、接口、枚举、注解
FIELD,//可以修饰成员变量
METHOD,//可以修饰方法
PARAMETER,//可以修饰参数
CONSTRUCTOR,//可以修饰构造方法
LOCAL_VARIABLE,//可以修饰局部变量
ANNOTATION_TYPE,// 可以修饰Annotation
PACKAGE//可以修饰包
}
类似于批注,是对源代码加入描述;JDK5.0引入,不同于注释(注释在编译时被忽略)。
注释,就是说明。Java的注释,可以附加在package(包)、class(类)、method(成员变量)
和field (成员变量)等上面,相当于给它们添加了额外的辅助信息。
其原理是通过反射机制/反省。通过反射可以获得类、对象的信息(元数据)。
常见的Java内建注释
@Deprecated用于修饰已经过时的方法。
@Override用于修饰此方法覆盖了父类的方法(而非重载)。加上后编译器强制检查方法名。
@SuppressWarnings用于通知java编译器禁止特定的编译警告。
Annotation工作方式
annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,
它会反过来对正在运行的程序语义有所影响。annotation可以从源文件、class文件或者以在
运行时反射的多种方式被读取。
当然annotation在某种程度上使javadoc tag更加完整。一般情况下,如果这个标记对
java文档产生影响或者用于生成java文档的话,它应该作为一个javadoc tag;否则将作为一个annotation。
Annotation使用方法
1、interface 关键字前有@。
2、每个方法声明定义为一个元素。
3、方法声明不能包含有参数和throws子句。
4、方法返回类型只能是: 基本类型, String, Class,enums, annotations, 以及它们的数组。
5、方法可以定义缺省值。
自定义注解
目标:@Target 它用来修饰谁?
ElementType
类型
字段
方法
参数
保留规则 @Rectention(此括号可选3个值)设置该自定义注解保留的策略
用关键字@interface定义一个注解标记,使用@interface关键字实际上的意思就是
该接口继承自java.lang.annotation.Annotation接口。
如:
import java.lang.annotation.*;
@Target(ElementType.METHOD) //设置目标;即该 自定义注解用于修饰谁
@Retention(RetentionPolicy.CLASS)//设置保留策略;即 该自定义注解保留到编译后的字节码文件中
public @interface Path {
//类型 该注释属性名();
String name() default ""; //name属性值默认为""
/**
* 是否可用,默认可用
* 意思就是在Path注解中可以含有属性名为ebable,此属性的类型是boolean类型。客户端使用的时候可以根据需要自己指定相关的属性值。如果客户端不指定值,默认值是true
*/
boolean enable() default true;
}
元注释,也是一种注释,只不过有其特殊性,具体表现在它是一种针对注释类型的注释。Java中共有4种元注释,分别为Retention、Target、Documented和Inherited。
@Retention(RetentionPolicy.RUNTIME)
加载在VM中,在运行时进行映射(注解的生命周期出现在哪里看源码),将使用该注解类的信息值保持到真正的客户端运行时环境。
@Target(ElementType.METHOD)
限定此annotation只能标示方法,描述元注解可以出现的地方
@Target注解,它代表着注解的修饰范围,类型是java.lang.annotation.ElementType枚举类型。
public enum ElementType {
TYPE,//可以修饰类、接口、枚举、注解
FIELD,//可以修饰成员变量
METHOD,//可以修饰方法
PARAMETER,//可以修饰参数
CONSTRUCTOR,//可以修饰构造方法
LOCAL_VARIABLE,//可以修饰局部变量
ANNOTATION_TYPE,// 可以修饰Annotation
PACKAGE//可以修饰包
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树