这与Force annotated Class to contain annotated Field相反。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ContainsNonEditableFields {}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NonEditable {}
如果任何类字段都用@NonEditable注释;那么如何强制使用@ContainsNonEditableFields对该类进行注释?
最佳答案
这可以通过AspectJ完成。
但是关键思想是使用AspectJs declare warning or errors函数,为没有@NonEditable
批注的类中带有@ContainsNonEditableFields
批注的每个字段声明一个错误。
(不幸的是,我无法开箱即用地提供一个工作示例,但是我觉得如果您提出正确的问题,stackoverflow的人可以为您提供帮助)
declare error : @annotation(NonEditable) &&
! @annotation(ContainsNonEditableFields)
: "the class need ContainsNonEditableFields annotation";
这段代码只是某种涂抹,它不是AspectJ语法!