在DataBinding生成之后运行AnnotationProcessor

时间:2017-05-01 09:49:42

标签: java android android-databinding annotation-processing

我试图制作一个带整数的注释处理器。如果我使用显式整数,它的工作正常。但是当我使用android数据绑定BR类的值时:

@SomeAnnotation(BR.someField)

它表示未找到BR类。

我猜测android数据绑定BR生成尚未执行,因此错误。在数据绑定过程完成后,有没有办法标记我的注释处理器开始处理?

1 个答案:

答案 0 :(得分:0)

问题也是,你真正想要用这个值做什么。如果你在注释处理器中确实需要这个值,那么你可能会运气不好,因为具有字段本身的类只在编译过程中需要它的点之后创建。如果您需要运行时的值,则可能会遇到相同的问题。但是你应该考虑改变你的实现,因为在运行时处理注释是非常昂贵的。

现在到了可能有效的地步。如果需要将值写入使用注释处理器生成的源,则可以将此字段用作字符串值并将其写入新创建的源。您只需要确保也设置正确的导入集。

@SomeAnnotation("BR.someField")

当编译生成的代码时,此字段的行为与将其放入自编函数源中的行为完全相同。只要确保它不会在另一个注释的定义中结束。

final int someField = BR.someField;