强制带注释的类包含带注释的字段

时间:2010-06-28 12:38:20

标签: java annotations

是否可以强制(在编译时)带注释的类具有带注释的字段?

我有这样的注释:

@Target(value = ElementType.TYPE)
@interface MyClass {}

@Target(value = ElementType.FIELD)
@interface MyField {}

现在我希望像这样的类的编译失败:

@MyClass
class Customer {

}

这应该有效:

@MyClass
class Customer {
   @MyField
   String text;
}

1 个答案:

答案 0 :(得分:1)

是的,使用apt(注释处理工具)。

但对于这样简单的任务来说,这将是一种过度杀伤。

您可以创建一些在应用程序启动时触发的侦听器并检查此要求。

最后,您可以通过假设合理的默认值来避免这种情况 - 即,如果类被注释,则考虑所有注释的字段,并使用默认值。