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

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

我有这个注释:

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

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

 @MyClass class Customer { } 

这应该工作:

 @MyClass class Customer { @MyField String text; } 

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

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

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

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