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