在 Java 中的注释中定义注释的目的
Purpose of defining an Annotation inside an Annotation in Java
我是一名 Java 开发人员,我在我工作的公司浏览代码库,试图寻找我不熟悉的高级语言语法。我无意中发现了一个约束注释文件夹,它们本身都包含注释定义,如下所示...
@Constraint(validatedBy=MyValidator.class)
@Target(FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FirstAnnotation{
Class<?>[] groups() default{};
Class<? extends Payload>[] payload() default {};
String message() default "Default message";
@Target({FIELD, ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
FirstAnnotation[] value();
}
}
有人能告诉我这样做的目的以及如何行使吗?我知道它是作为值的 FirstAnnotation 列表,但不确定它的用例是什么以及如何使用 List 注释。我也很好奇是否有人可以阐明为什么需要 groups()、payload() 和 message()?
它是一个静态成员,这意味着您可以使用它:
@FirstAnnotation.List({
@FirstAnnotation(...),
@FirstAnnotation(...)
})
private MyType myField;
您可以通过使用 @Repeatable(FirstAnnotation.List.class)
注释 FirstAnnotation
来使这更容易。这样,您就可以省略显式列表:
@FirstAnnotation(...)
@FirstAnnotation(...)
private MyType myField;
这三个字段见https://javaee.github.io/tutorial/bean-validation-advanced001.html and https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/validator-customconstraints.html。
我是一名 Java 开发人员,我在我工作的公司浏览代码库,试图寻找我不熟悉的高级语言语法。我无意中发现了一个约束注释文件夹,它们本身都包含注释定义,如下所示...
@Constraint(validatedBy=MyValidator.class)
@Target(FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FirstAnnotation{
Class<?>[] groups() default{};
Class<? extends Payload>[] payload() default {};
String message() default "Default message";
@Target({FIELD, ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
FirstAnnotation[] value();
}
}
有人能告诉我这样做的目的以及如何行使吗?我知道它是作为值的 FirstAnnotation 列表,但不确定它的用例是什么以及如何使用 List 注释。我也很好奇是否有人可以阐明为什么需要 groups()、payload() 和 message()?
它是一个静态成员,这意味着您可以使用它:
@FirstAnnotation.List({
@FirstAnnotation(...),
@FirstAnnotation(...)
})
private MyType myField;
您可以通过使用 @Repeatable(FirstAnnotation.List.class)
注释 FirstAnnotation
来使这更容易。这样,您就可以省略显式列表:
@FirstAnnotation(...)
@FirstAnnotation(...)
private MyType myField;
这三个字段见https://javaee.github.io/tutorial/bean-validation-advanced001.html and https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/validator-customconstraints.html。