在所有其他处理器生成代码后,是否可以强制注释处理器为RERUN?基本上我现在遇到的是Android Databinding为我的一个类生成一个类型参数,导致其超级继承的类在我的处理器的第一次传递时没有正确传播。任何帮助将不胜感激!
由于
注释:
@Inherited
@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface ContainsViewModel{
}
示例:
@ContainsViewModel
public class MyActivity extends ViewModelActivity<MyViewModel, GeneratedClass>{
//The GeneratedClass in this case is a SubClass of ViewDataBinding for the Android databinding library
@InjectHere
public void injectMethod(MyViewModel injected){
}
}
在上面的示例中,GeneratedClass将导致此类永远不会显示在
中public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
roundEnv.getElementsAnnotatedWith(ViewModelView.class)// does not have MyActivity
}
这似乎是因为在我的进程的最后一次传递之前,GeneratedClass永远不会生成。我可以这样说,
roundEnv.getRootElements()
然而,当我最终看到GeneratedClass出现时,roundEnv拒绝提供任何带有ContainsViewModel注释的元素。关于处理这个问题的任何想法?感谢。