【问题标题】:Android code generation. Get child elements for parent element.安卓代码生成。获取父元素的子元素。
【发布时间】:2018-01-15 19:37:06
【问题描述】:

我有两个注释。

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OmegaExtra {
    String value() default "";
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OmegaExtraModel {

    String value() default "";

}

我有课。像例子

class Map {

@OmegaExtra
String param1;

@OmegaExtra
String param2;

@OmegaExtra
String param3;

}

这是我的活动课程。

@OmegaActivity
    public class ShareFilesActivity extends AppCompatActivity {

    @OmegaExtra
    String value;

    @OmegaExtraModel
    Map map;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_share_files);
            AppOmegaIntentBuilder.inject(this);
        }

    }

找到所有@OmegaExtra 元素对我来说不是问题。 但是我怎么能找到

的子元素
@OmegaExtraModel
Map map;

我的意思是我应该在@OmegaExtraModel 中找到所有像@OmegaExtra 一样注释的元素。

@Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {

Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(OmegaActivity.class));
for(Element element: elements) {
List<? extends Element> subList = element.getEnclosedElements();
     for (Element subElement : subList) {
     OmegaExtra annotation = subElement.getAnnotation(OmegaExtraModel.class);
     }
}

【问题讨论】:

    标签: android code-generation javapoet


    【解决方案1】:

    试试这个:

    List<? extends Element> enclosedElements = ((DeclaredType) subElement.asType()).asElement().getEnclosedElements();
     for (Element childElement : enclosedElements) {
     OmegaExtra annotation = element.getAnnotation(OmegaExtra.class);
     if(annotation != null) {
     ....
     }
     }
    

    【讨论】:

      猜你喜欢
      • 2013-09-11
      • 2013-06-13
      • 1970-01-01
      • 2013-08-28
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2012-05-03
      相关资源
      最近更新 更多