gpt4 book ai didi

java - 另一个注释处理器使用的生成类

转载 作者:行者123 更新时间:2023-11-29 02:36:30 25 4
gpt4 key购买 nike

我正在编写一个生成 Android Databinding 的注释处理器 Observable对象。这个想法是在 Realm 之间提供一个兼容性垫片。和数据绑定(bind)库。

示例输出:

public class ObservablePerson extends BaseObservable {
@Bindable
public String getName() {
return getValue(BR.name);
}

@Bindable
public void setName(String name) {
setValue(BR.name, name);
}
}

问题是数据绑定(bind)注释处理器不处理由我的注释处理器生成的类(导致 BR.name 不可用)。

我曾希望数据绑定(bind)注释处理器会在后面的回合中选择新生成的类,但事实并非如此。

最佳答案

事实证明,我做错了几件事:

  1. 我试图处理的注解引用了 BR.class,这导致在生成 BR.class 之前处理我的注解类。这导致我的注释处理器在 android 数据绑定(bind)处理器之后循环运行。
  2. android 数据绑定(bind)处理器只在第一轮收集 BR.class 的值。在后续回合中生成的任何文件都将被忽略。这意味着即使数据绑定(bind)注释处理器在我的文件生成后运行,BR 类也没有更新。
  3. android 数据绑定(bind)处理器在第一轮运行。这有效地排除了使用其他注释处理器生成的类。见 (2)

我的解决方案是构建一个 gradle 插件,它将生成一个包含 @Bindable 注释的接口(interface)。这些文件在编译器运行之前生成,确保它们在第一轮注释处理中存在。那时我的注释处理器可以生成如上所述的文件。

关于java - 另一个注释处理器使用的生成类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691355/

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