根据自己的需求有时候需要自定义一些注解来实现自己的功能,自定义注解必须了解的如下:
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.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或其他使