我写了一个 java 注释,看起来像这样:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) // can I further limit this to only fields of type DomainObject?
public @interface Owns {
}
在简单地环顾四周后,我看不出是否有办法进一步限制此注释的使用,以便只能注释特定类型的字段。此注释是我们域的自定义注释,只能用于我们的基本域对象类的实例。
有谁知道如何在编译时强制执行此操作?
感谢您的帮助!
最佳答案
您可能会在 annotation processor 中发出错误(如果需要 Java 5 支持,则必须使用 private API)。您可以使用 Messager你从ProcessorEnvironment得到传递给初始化。
这有多有效可能取决于您的工具链。如果你使用 javac 应该没问题通过命令行或通过构建脚本进行编译。在我的 Eclipse 版本中,我必须为项目手动启用注释处理器(通过项目设置),并且错误不会出现在任何明显的地方。 (JDT 注释插件确实有扩展点,如果您想提供自定义支持,可以更好地与 IDE 集成。)检查常用工具是值得的,尤其是当您需要支持任意开发环境时。
关于java - 我可以根据被注释的字段类型生成编译时错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378616/