ContainsNonEditableFields

ContainsNonEditableFields

这与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语法!

07-26 02:49