java注解篇。
注解和注释的作用和使用场景有相似之处,但究其作用和使用场景的差异相去甚远。
基础内容请参考其他资料。
本文重在分析注解相关的api
java提供的注解工程支持包在:java.lang.annotation
1、Target :标识注解可以标识的位置(类、方法、成员等)。 note:其值类为ElementType枚举数组。
2、Retention:标识注解存留的阶段,这主要是对应了注解对java从开发到运行的各个阶段。
具体请参考:RetentionPolicy 的枚举值。
SOURCE:源码级别。对代码开发时有提醒作用。比如:SuppressWarnings
CLASS:保留到class文件阶段。对生成的字节码文件做处理。
RUNTIME:运行时阶段。运行时可以获取注解的信息。
3、Inherited :标识注解是否可以被继承。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}
[b]note:如果注解标识在接口中的方法上,那么实现类的方法注解解析是获取不到的,但是如果接口中的方法标识了Inherited ,那么将能够获取。
[/b]
4、Annotation 注解的内置高层接口。
就像Object类之于 普通的class定义的类一样。
[b]note:注解一般用在运行时的解析,来获取注解的逻辑,所以和java的反射支持紧密相关,请参考java反射功能的文章[/b]。
注解和注释的作用和使用场景有相似之处,但究其作用和使用场景的差异相去甚远。
基础内容请参考其他资料。
本文重在分析注解相关的api
java提供的注解工程支持包在:java.lang.annotation
1、Target :标识注解可以标识的位置(类、方法、成员等)。 note:其值类为ElementType枚举数组。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType[] value();
}
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
...
}
2、Retention:标识注解存留的阶段,这主要是对应了注解对java从开发到运行的各个阶段。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
具体请参考:RetentionPolicy 的枚举值。
SOURCE:源码级别。对代码开发时有提醒作用。比如:SuppressWarnings
CLASS:保留到class文件阶段。对生成的字节码文件做处理。
RUNTIME:运行时阶段。运行时可以获取注解的信息。
3、Inherited :标识注解是否可以被继承。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}
[b]note:如果注解标识在接口中的方法上,那么实现类的方法注解解析是获取不到的,但是如果接口中的方法标识了Inherited ,那么将能够获取。
[/b]
4、Annotation 注解的内置高层接口。
就像Object类之于 普通的class定义的类一样。
[b]note:注解一般用在运行时的解析,来获取注解的逻辑,所以和java的反射支持紧密相关,请参考java反射功能的文章[/b]。