码迷,mamicode.com
首页 > 其他好文 > 详细

元注解

时间:2014-12-09 13:51:53      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   java   on   

元注解,是定义注解的时候的使用的注解。定义注解使用@interface

@Documented
标注@Documented的注解,在代码中使用后,如果对代码生成javadoc,注解信息也会加入到javadoc中。
java.lang.annotation.Documented

@Inherited
默认情况注解不可以继承,标注了@Inherited的注解,是可以随着类继承而继承的。
java.lang.annotation.Inherited

@Target({ })
约束注解应用的目标元素类型 ,ElementType枚举,可选值:ANNOTATION_TYPE CONSTRUCTOR  FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE,
比如,如果定义为METHOD ,就只能用在方法签名前
java.lang.annotation.Target

@Retention()
约束注解应用的时机  RetentionPolicy枚举,可选值:CLASS  RUNTIME   SOURCE,
比如:RUNTIME,运行的时候就能通过反射找到,而CLASS虽然放到了class中,却不在运行期起作用,SOURCE,则在编译的时候被抛弃。

比如:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })   
@Retention(RUNTIME)   
@Documented   
@Constraint(validatedBy = {NotEmptyValidator.class})   
public @interface NotEmpty {   
  String message() default "this string may be empty";   
  Class[] groups() default { };   
  Classextends Payload>[] payload() default {};   
} 
class Test {
    @NotEmpty 
    private String company; 
}

运行时通过Test类可以反射到这个NotEmpty注解,并且字段,方法名,构造函数等都可以用这个注解,并且生成javadoc的时候,也会带有这个注解的信息。

而如果继承Test类,就没有这个NotEnpty注解了,因为这个注解不可以继承。

@Constraint

是Bean Validation规范中带的元注解,可以用来指定实现的ConstraintValidator接口的类(如:NotEmptyValidator),这样validation框架扫描注解的时候就知道用这个实现类去做校验。

元注解

标签:style   blog   io   ar   color   使用   sp   java   on   

原文地址:http://www.cnblogs.com/no5element/p/4153018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!