`
xiejuntao
  • 浏览: 7864 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java注解

阅读更多

此为个人学习笔记,内容可能有些混乱,仅供参考。

 

1、  自带注解

大致可分为三类:  

a、编写文档:通过代码里标识的元数据生成文档。     

b、代码分析:通过代码里标识的元数据对代码进行分析。  

c、编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。

@author

@Deprecated

@ SuppressWarnings ,其参数有: 

deprecation,使用了过时的类方法时的警告 

unchecked,执行了未检查的转换时的警告 

fallthrough,当 Switch 程序块直接通往下一种情况而没有 Break 时的警告  

path,在类路径、源文件路径等中有不存在的路径时的警告 

serial,当在可序列化的类上缺少 serialVersionUID 定义时的警告  

finally ,任何 finally 子句不能正常完成时的警告 

all,关于以上所有情况的警告

 

@ Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})

@ Retention ( RetentionPolicy .SOURCE)

/**

可以在编译时选择代码里的注释是否叧存在于源代码级,或者它也能在class文件中出现

*/

@ Target({TYPE,FIELD, METHOD ,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})

@ Retention(RetentionPolicy.SOURCE)

public   @interface  SuppressWarnings {

    String[] value();

}

 

2、  自定义注解

@Target ({ElementType. METHOD ,ElementType. FIELD })

@Retention (RetentionPolicy. RUNTIME )

public   @interface   XAnnotation  {

String[] vaStrings();

int  level()   default 1;

}

Enum  一般用来表示 一组相同类型 常量

 

3 ElementType

Java代码  

 

package java.lang.annotation;      

public enum ElementType {      

   TYPE,       // 用于类,接口,枚举但不能是注释   

   FIELD,       // 字段上,包括枚举值     

   METHOD,     // 方法,不包括构造方法   

PARAMETER,   // 方法的参数   

  CONSTRUCTOR,       //构造方法   

  LOCAL_VARIABLE,       // 本地变量    

  ANNOTATION_TYPE,       // 注释类型    

  PACKAGE     // Java包     

 }  

 

4、RetentionPolicy枚举:  

编译器的处理有三种策略:  

将注释保留在编译后的类文件中,并在第一次加载类时读取它。  

将注释保留在编译后的类文件中,但是在运行时忽略它。  

按照规定使用注释,但是并不将它保留到编译后的类文件中。   

Java代码  

package java.lang.annotation;      

public enum RetentionPolicy {      

   SOURCE, // 此类型会被编译器丢弃     

  CLASS, // 此类型注释会保留在class文件中,但JVM会忽略它     

  RUNTIME // 此类型注释会保留在class文件中,JVM会读取它      

 }     

 

5、其它

@Documented    文档化功能

使用此注解时必须设置RetentionPolicy为RUNTIME

 

@Inherited    让它允许继承,可作用到子类   

 

6、读取注解信息

伪代码:

Class c;   //Class对象,可通过Class.forName( 类全名 )得到

Method []methods=c.getDeclaredMethods();//获取类申明的所有方法

//迭代方法

Annotation[] annotations = method.getDeclaredAnnotations();

//获取在某个方法上所有注解

for(Annotation an:annotations){   

}   

               

 

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics