我如何在没有名字的情况下生成注释

  • 本文关键字:情况下 注释 java javapoet
  • 更新时间 :
  • 英文 :


假设我想用诸如 @RunWith(AndroidJUnit4.class)之类的课程注释一类。一般的Javapoet食谱是:

  private static ClassName RUN_WITH=ClassName.get("org.junit.runner", "RunWith");
  private static ClassName ANDROID_JUNIT4=ClassName.get("android.support.test.runner", "AndroidJUnit4");
  private TypeSpec buildTestClass() {
    return TypeSpec.classBuilder("MainActivityTest")
      .addModifiers(Modifier.PUBLIC)
      .addAnnotation(AnnotationSpec.builder(RUN_WITH)
        .addMember(null, "$T.class", ANDROID_JUNIT4)
        .build())
      .build();
  }

但是,AnnotationSpec.Builder上的两个addMember()方法每个都以成员名称为...我不想要一个名称。我尝试了null,如上所示,它生成:

@RunWith(
    null = AndroidJUnit4.class
)

所以...我们如何生成一个"匿名"(或单个不明会成员的正确术语)注释?

要使用的魔术名称是 value

  private static ClassName RUN_WITH=ClassName.get("org.junit.runner", "RunWith");
  private static ClassName ANDROID_JUNIT4=ClassName.get("android.support.test.runner", "AndroidJUnit4");
  private TypeSpec buildTestClass() {
    return TypeSpec.classBuilder("MainActivityTest")
      .addModifiers(Modifier.PUBLIC)
      .addAnnotation(AnnotationSpec.builder(RUN_WITH)
        .addMember("value", "$T.class", ANDROID_JUNIT4)
        .build())
      .build();
  }

这将根据需要生成@RunWith(AndroidJUnit4.class)

相关内容

  • 没有找到相关文章

最新更新