gpt4 book ai didi

java - 注释处理器仅处理最近更改的类

转载 作者:行者123 更新时间:2023-12-02 13:00:32 25 4
gpt4 key购买 nike

在我们的项目中,我们希望为用户界面对话框创建唯一标识符。为了确保开发人员不会为对话框创建重复的标识符,我创建了一个注释处理器,它检查“对话框注释”(它包含唯一标识符),并在重复标识符存在时通过 Eclipse Problems View 中的 Messager 类创建错误已检测到。

我希望处理器能够处理所有用对话框注释注释的类,但只有当我在 Eclipse 中调用完整的构建时,他才会这样做。但是,如果我更改单个对话框类并保存它,处理器只处理这个单个对话框(我相信这称为增量构建),从而使我无法检查其他对话框是否已经分配了相同的标识符。我尝试在 .factorypath 文件中设置 以批处理模式运行此容器的处理器,但它似乎没有效果。 Factory Path Preferences 的 eclipse 文档介绍了此选项:

This option only applies to processors using the Java 5 Mirror APIs. It does not affect processors using the Java 6 annotation processing APIs.

我确实使用 Java 6 注释处理 API。所以这似乎也不是一个选择。

有什么方法可以让它处理所有带注释的类 - 甚至是未更改的类?我也很高兴听到解决最初问题的其他方法。

最佳答案

AnnotationProcessor 只会处理已编译的类,所以难怪你会遇到麻烦。

我假设您的处理器在运行时收集所有 id。最好将收集到的 id 存储到缓存(例如文件)中并检查其中是否存在,而不是在每次编译时扫描所有带注释的类(准确地说是所有类)。这样,只需要对类进行一次编译即可注册id。 future 的每次修改都会检查已编译的、未修改的类,而无需重新检查它们。

关于java - 注释处理器仅处理最近更改的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com