首页 > 其他 > 详细

元注解

时间:2014-12-09 13:51:10      阅读:283      评论:0      收藏:0      [点我收藏+]
元注解,是定义注解的时候的使用的注解。定义注解使用@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框架扫描注解的时候就知道用这个实现类去做校验。

元注解

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!