java - 我可以根据被注释的字段类型生成编译时错误吗

标签 java annotations

我写了一个 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/

相关文章:

java - 复选框导致小部件出错

java - 接受n个参数的注释

java - "Eclipse-BundleShape: dir" header 不起作用,但插件仍导出为 JAR

java - 尽管延迟初始化还是热切加载?

java - 有没有一种简单的方法可以消除输入中的最后一个逗号?数字分隔符

java - Java中如何使用反射获取注解的值

spring - 使用Spring Security插件使用文件扩展名内容协商?

使用 org.reflections 在 JAR 文件中找不到 Java 注释

java - 配置 hibernate 自动映射实体

java - 在运行时将数据保存在服务器中的首选方法是什么