java注解

来源:互联网 发布:flash转换gif软件 编辑:程序博客网 时间:2024/06/05 00:55
主要内容:
JDK
内置的基本注解类型(3个)
自定义注解类型
对注解进行注解(4个)
利用反射获取注解信息(在反射部分涉及)

Annotation 其实就是代码里的特殊标记,这些标记可以在编译, 类加载, 运行时被读取,并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.
Annotation 可以像修饰符一样被使用,可用于修饰包,,构造器, 方法, 成员变量,参数, 局部变量的声明, 这些信息被保存在Annotation “name=value” 对中.

三个基本的 Annotation:
@Override: 限定重写父类方法,该注释只能用于方法
@Deprecated: 用于表示某个程序元素(,方法等)已过时
@SuppressWarnings:抑制编译器警告
@SuppressWarnings({ "rawtypes", "unused" })//抑制未使用泛型和变量未使用警告。

如何自定义注解(仿照SuppressWarnings):使用 @interface来表示注解,变量后面加()
public @interface MyAnnotation {
    String value();//自定义注解中的变量
}
可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字
public@interface MyAnnotation{

         String name() defaultatguigu";

 }


元注解:修饰注解的注解。
@Retention: 只能用于修饰一个 Annotation 定义, 用于指定该Annotation 可以保留多长时间, @Rentention包含一个RetentionPolicy类型的成员变量,使用 @Rentention时必须为该value 成员变量指定值:例如
@Retention(RetentionPolicy.SOURCE)

RetentionPolicy.SOURCE:编译器直接丢弃这种策略的注释
RetentionPolicy.CLASS:编译器将把注释记录在 class文件中. 当运行Java 程序时, JVM不会保留注解。这是默认值
RetentionPolicy.RUNTIME:编译器将把注释记录在class文件中. 当运行Java程序时,JVM会保留注释. 程序可以通过反射获取该注释

@Target: 用于修饰Annotation 定义,用于指定被修饰的 Annotation能用于修饰哪些程序元素. @Target也包含一个名为 value 的成员变量.如:@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Documented: 用于指定被该元Annotation 修饰的 Annotation 类将被 javadoc工具提取成文档.
定义Documented的注解必须设置Retention值为RUNTIME
@Inherited: 被它修饰的Annotation 将具有继承性.如果某个类使用了被@Inherited 修饰的 Annotation, 则其子类将自动具有该注解





0 0
原创粉丝点击