JavaPoet:如何在批注中构建批注

红色箭头

我尝试生成下面带有注释的表达式:

@NamedQueries({@NamedQuery(name = "E.findAll", query = "SELECT e FROM E e")})

我尝试了下面的代码:

 .addAnnotation(AnnotationSpec.builder(NamedQueries.class)        
                .addMember( AnnotationSpec.builder(NamedQuery.class)
                    .addMember("name", "$S", "E.findAll")
                    .addMember("query", "$S", "SELECT e FROM E e)
                    .build()).build())

但由于addMember需要字符串;此表达式给出错误。那么我如何获得递归表达式。

是否可以在注释内构建另一个注释?

杰西·威尔逊(Jesse Wilson)

是的。使用$L并传递该AnmotationSpec。

ClassName beef = ClassName.get(tacosPackage, "Beef");
ClassName chicken = ClassName.get(tacosPackage, "Chicken");
ClassName option = ClassName.get(tacosPackage, "Option");
ClassName mealDeal = ClassName.get(tacosPackage, "MealDeal");
TypeSpec menu = TypeSpec.classBuilder("Menu")
    .addAnnotation(AnnotationSpec.builder(mealDeal)
        .addMember("price", "$L", 500)
        .addMember("options", "$L", AnnotationSpec.builder(option)
            .addMember("name", "$S", "taco")
            .addMember("meat", "$T.class", beef)
            .build())
        .addMember("options", "$L", AnnotationSpec.builder(option)
            .addMember("name", "$S", "quesadilla")
            .addMember("meat", "$T.class", chicken)
            .build())
        .build())
    .build();
assertThat(toString(menu)).isEqualTo(""
    + "package com.squareup.tacos;\n"
    + "\n"
    + "@MealDeal(\n"
    + "    price = 500,\n"
    + "    options = {\n"
    + "        @Option(name = \"taco\", meat = Beef.class),\n"
    + "        @Option(name = \"quesadilla\", meat = Chicken.class)\n"
    + "    }\n"
    + ")\n"
    + "class Menu {\n"
    + "}\n");

该测试是大量示例的来源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Matplotlib批注中显示矩阵

来自分类Dev

如何在Matplotlib批注中显示矩阵

来自分类Dev

如何在Eclipse中更改批注中数组的格式?

来自分类Dev

如何在Web Servlet中解析Spring @Value批注?

来自分类Dev

如何在批注中获取值other属性

来自分类Dev

如何在可选闭包中添加@noescape批注

来自分类Dev

如何在IntelliJ IDEa中添加@Contract批注?

来自分类Dev

如何在Web Servlet中解析Spring @Value批注?

来自分类Dev

如何在Xcode中更改PDFView批注背景色?

来自分类Dev

如何在Play框架中获取@Assisted批注

来自分类Dev

如何在swagger php api批注中传递可选参数?

来自分类Dev

@Index批注在JPA 2.1中如何工作?

来自分类Dev

IntelliJ / Kotlin PSI中的批注与批注条目

来自分类Dev

如何使用API 17下的构建忽略@JavascriptInterface批注-Android

来自分类Dev

如何使用@Contract批注

来自分类Dev

如何使用@PreviewParameter批注?

来自分类Dev

MATLAB中的LaTeX批注

来自分类Dev

MATLAB中的LaTeX批注

来自分类Dev

如何在损坏控制报告中呈现Spock @Issue批注?

来自分类Dev

如何在@SlingServlet批注中调用使用“ resourceType”而不是“ paths”的Sling Servlet

来自分类Dev

如何在带有验证批注的bean属性的测试用例中引发ConstraintValidationException?

来自分类Dev

如何在枚举中使用Hibernate验证批注?

来自分类Dev

如何在方法上使用Lombok @Builder批注

来自分类Dev

如何在类级变量中使用Spring @Value批注

来自分类Dev

如何在Kotlin中使用Jackson JsonSubTypes批注

来自分类Dev

如何在Android项目中使用@WorkerThread批注?

来自分类Dev

如何在Cucumber框架中正确使用TestNG批注

来自分类Dev

如何在Ant文件运行时忽略批注

来自分类Dev

批注如何在运行时检查验证

Related 相关文章

  1. 1

    如何在Matplotlib批注中显示矩阵

  2. 2

    如何在Matplotlib批注中显示矩阵

  3. 3

    如何在Eclipse中更改批注中数组的格式?

  4. 4

    如何在Web Servlet中解析Spring @Value批注?

  5. 5

    如何在批注中获取值other属性

  6. 6

    如何在可选闭包中添加@noescape批注

  7. 7

    如何在IntelliJ IDEa中添加@Contract批注?

  8. 8

    如何在Web Servlet中解析Spring @Value批注?

  9. 9

    如何在Xcode中更改PDFView批注背景色?

  10. 10

    如何在Play框架中获取@Assisted批注

  11. 11

    如何在swagger php api批注中传递可选参数?

  12. 12

    @Index批注在JPA 2.1中如何工作?

  13. 13

    IntelliJ / Kotlin PSI中的批注与批注条目

  14. 14

    如何使用API 17下的构建忽略@JavascriptInterface批注-Android

  15. 15

    如何使用@Contract批注

  16. 16

    如何使用@PreviewParameter批注?

  17. 17

    MATLAB中的LaTeX批注

  18. 18

    MATLAB中的LaTeX批注

  19. 19

    如何在损坏控制报告中呈现Spock @Issue批注?

  20. 20

    如何在@SlingServlet批注中调用使用“ resourceType”而不是“ paths”的Sling Servlet

  21. 21

    如何在带有验证批注的bean属性的测试用例中引发ConstraintValidationException?

  22. 22

    如何在枚举中使用Hibernate验证批注?

  23. 23

    如何在方法上使用Lombok @Builder批注

  24. 24

    如何在类级变量中使用Spring @Value批注

  25. 25

    如何在Kotlin中使用Jackson JsonSubTypes批注

  26. 26

    如何在Android项目中使用@WorkerThread批注?

  27. 27

    如何在Cucumber框架中正确使用TestNG批注

  28. 28

    如何在Ant文件运行时忽略批注

  29. 29

    批注如何在运行时检查验证

热门标签

归档