让注释处理器正确地查找具有继承注释的类

时间:2015-09-28 16:10:46

标签: java android annotations

在所有其他处理器生成代码后,是否可以强制注释处理器为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注释的元素。关于处理这个问题的任何想法?感谢。

0 个答案:

没有答案