首页 > 代码库 > 元注解
元注解
元注解,是定义注解的时候的使用的注解。定义注解使用@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框架扫描注解的时候就知道用这个实现类去做校验。
元注解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。