问题标签 [javapoet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
32 浏览

java - 在自定义注释处理器中使用 Android SDK 类

我正在尝试实现一个注释处理器来用前景色填充视图(目前没什么特别的)。我已经实现了我的处理器来使用我的自定义注释处理每个类型注释。到目前为止,该过程一直在进行,直到我不得不在生成的方法中使用来自 Android SDK 的类型声明一个变量,即ColorDrawable类生成已成功完成,但缺少对 Type 的导入ColorDrawable.java

问题是,由于我的处理器位于 java 库中,但我无法ColorDrawable.class从那里引用。

我正在使用很酷的库JavaPoet来生成 java 文件。这个特殊问题有什么解决方案吗?

提前致谢!

0 投票
1 回答
388 浏览

java - 使用 javapoet 构建类时返回正确的类型对象

我正在开发注释处理器并使用 JavaPoet 从处理中生成输出类,但我似乎无法找到一种方法让生成的方法返回正确类型的对象。例如,我想要的输出是这样的......

但是我只能让它做这样的事情......

我在 MethodBuilder 中使用返回方法,但它需要一个适当的类作为返回类型,那么如何在构建方法时添加修饰符?这是我所拥有的简单版本...

我试过到处搜索,但找不到这类事情的答案。我知道所有的地图都是技术上的,但我想避免在 android studio 中突出显示未经检查的强制转换,而且在方法返回时没有正确的类型感觉是错误的。这是可能的,还是我应该接受突出显示并继续前进?谢谢你。

0 投票
1 回答
728 浏览

java - JavaPoet:如何添加类类型的字段,但我只有类名,没有类?

应该给出类似的东西

任何其他解决方法也受到赞赏。

0 投票
2 回答
72 浏览

java - 如何在不嵌套的情况下将两个类添加到同一个 .java 文件?

结果:

结果不是这样的:

0 投票
0 回答
202 浏览

java - JavaPoet:我创建了一个 .java 文件,并希望在运行时添加到现有的 jar 文件中。我怎么做?

我正在尝试为 java 项目创建安装程序。我有项目说 codeGenerator,在制作安装程序时,生成的 jar 将是 codeGenrerator.jar 我正在尝试使用 javapoet 创建一个 .java 文件,但是当我运行应用程序时我无法将文件写入 codeGenerator.jar . 我怎样才能做到这一点?

0 投票
1 回答
424 浏览

java - 使用可变数量的参数生成对方法的调用

我正在使用 JavaPoet 生成给定字段列表的类。

生成一个接受这个字段列表并将其转换为参数列表的构造函数非常简单,如下所示:

我还想生成一个实例化生成类的新对象的静态方法,这需要我生成一个使用上述字段列表的代码块。

目前,我正在通过以下方式实现这一目标:

它有效,但我想知道是否有一种更“惯用”的方式来使用 JavaPoet 来构建具有内置模板支持的参数列表。

0 投票
1 回答
148 浏览

java - 对生成的代码运行 Lint/Sonarqube 分析

我正在开发一个使用 JavaPoet 生成 java 代码的注释处理库。它由三个模块组成

  • 注释处理器
  • 定义注释和其他一些帮助代码的库
  • 一个同时使用两者的测试应用

整个事情是使用 Gradle 构建的。我有一个运行 Sonarqube 的环境,我可以使用./gradlew sonarqube. 然而,Sonar 只扫描src/main/java所有三个模块。我希望能够扫描模块的build/目录app以确保生成的代码正常,但我找不到任何关于如何执行此操作的线索。我希望有一种方法可以指示 Sonar 扫描默认目录之外的其他目录。有人可以为此建议一种方法吗?

0 投票
2 回答
935 浏览

java - 在注解处理器中使用 JavaPoet 编写 java 文件

我正在尝试使用 processingEnv.getFiler() 创建源文件。但我没有看到任何源文件被创建。下面是我正在使用的代码:

然后在Annotation处理器的重写函数process()中调用函数javaPoetEg。我在这里做错了什么?

0 投票
1 回答
936 浏览

java - 基于现有类和注释生成带有 gradle 任务的源代码

我正在创建 springboot 应用程序,并且大多数时候我发现自己在为我的模型编写样板代码——存储库、服务、控制器、构建器......我不想这样做。

根据我的经验、以前的工作和研究,我在脑海中形成了一个概念。基本上如下:

  1. 我创建一个注释
  1. 我创建了一个处理器
  1. 我写我的领域特定类
  1. 最后,我创建了一个 gradle 任务(?)

理想情况下,此模板生成器将是一个单独的模块。

我看过一些示例项目(主要是针对 android 的),然后我发现了最有前途的:

https://www.baeldung.com/java-annotation-processing-builder

会很完美,但是......它使用 maven,并且代码被放置在一个完全无法穿透的存储库中,根项目中有一个 pom.xml 文件,有几千行。感谢:D

现在我正在开发一个带有 springboot 应用程序的示例多模块 gradle 项目。我有一个实体(MyDomainSpecificEntity),我试图让 gradle 根据我的注释和处理器为我生成一些源代码。

首先,如果我在概念上是错误的,最大的帮助将是一些建议。

其次,如果我不是,我将不胜感激该 gradle 脚本的一些帮助。

最后......最好是一个干净的示例项目,如果有人曾经玩过这个主题,并且有某种公共回购,那将是最受欢迎的。

谢谢。

0 投票
1 回答
302 浏览

java - 错误:包生成的.schema 不存在

在我的 Android 应用程序中,我有一个注释处理器,它使用生成的文件JavaPoet并将它们放在包 generate.schema 下。

文件生成正确。每当我像这样使用生成的文件时

我收到以下错误:

但是如果我包含完全限定的类名而不是像这样导入

代码编译并运行没有任何错误。

我不想在每次使用GeneratedFile. 我不确定我做错了什么,因为我仍在学习使用Annotation Processor

其他库(包括 Realm、DataBinding)生成的文件都按预期正常工作。

文件生成:

使用 JavaPoet 我运行以下代码。

  • NamespaceCreator.generateClassPackage(element)class返回ie的包名generated.schema