这与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注释?
答案 0 :(得分:1)
这可以通过AspectJ完成。
但关键的想法是使用AspectJs declare warning or errors函数,为没有@NonEditable
注释的类中的@ContainsNonEditableFields
注释声明每个字段的错误。
(遗憾的是我无法提供开箱即用的工作示例,但是如果你提出正确的问题,那么stackoverflow的某些人可以帮助你)
declare error : @annotation(NonEditable) &&
! @annotation(ContainsNonEditableFields)
: "the class need ContainsNonEditableFields annotation";
这段代码只是某种涂鸦,它不是workj语法!