是否可以强制(在编译时)带注释的类具有带注释的字段?
我有这样的注释:
@Target(value = ElementType.TYPE)
@interface MyClass {}
@Target(value = ElementType.FIELD)
@interface MyField {}
现在我希望像这样的类的编译失败:
@MyClass
class Customer {
}
这应该有效:
@MyClass
class Customer {
@MyField
String text;
}
答案 0 :(得分:1)
是的,使用apt(注释处理工具)。
但对于这样简单的任务来说,这将是一种过度杀伤。
您可以创建一些在应用程序启动时触发的侦听器并检查此要求。
最后,您可以通过假设合理的默认值来避免这种情况 - 即,如果类被注释,则考虑所有注释的字段,并使用默认值。