自定义注解整理 篇一

来源:互联网 发布:在线视频录制软件 编辑:程序博客网 时间:2024/06/06 08:28
根据自己的需求有时候需要自定义一些注解来实现自己的功能,自定义注解必须了解的如下:
1.public @interface 注解名称。  -- 申明注解
2.注解的属性的定义如下   类型 名称() 默认值      eg:boolean needSave() default false;
eg: 表单验证的token


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented  
@Inherited  
public @interface Token {
 
    boolean needSave() default false;
 
    boolean needRemove() default false;


    // 定义SESSION中存放
    String sessionKey() default "interceptorToken"; 
}


名词解释:
    @Target 定义注解的作用目标。定义的源码如下:
          @Documented
         @Retention(RetentionPolicy.RUNTIME)
         @Target(ElementType.ANNOTATION_TYPE)
          public @interface Target {
            ElementType[] value();
         }
     @retention定义注解类的生命周期。定义的源代码如下:
           @Documented  
           @Retention(RetentionPolicy.RUNTIME)   
           @Target(ElementType.ANNOTATION_TYPE)   
            public @interface Retention {   
                   RetentionPolicy value();   
             }


         @inherit  允许子类继承父类的注解
其中
1.@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上的.说明一下:TYPE(类型), FIELD(属性), METHOD(方法), PARAMETER(参数), CONSTRUCTOR(构造函数),LOCAL_VARIABLE(局部变量), ANNOTATION_TYPE,PACKAGE(包),其中的TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上. [color=#FF6600]注:如果没有指定ElementType则可以用在任何类型上面[/color]。


2.@Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个类型生成的信息


3.@Retention里面的RetentionPolicy是枚举类,对应的数据有:
            1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
            2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
            3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使


 
1 0
原创粉丝点击