问题标签 [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 投票
2 回答
382 浏览

java - 如何在 JavaPoet 中创建具有给定名称的类型?

在 JavaPoet 中,我需要创建一个TypeName表示给定名称的内部类的实例。

我有一个TypeSpec.Builder classBuilder外部班级。不知道下一步该做什么。

请注意,此内部类仅存在于生成的程序中,而不存在于生成程序中。

0 投票
1 回答
441 浏览

java - 使用 JavaPoet 实现生成的接口

我想使用JavaPoet生成一个接口和一个实现该接口的类。

但我正在努力告诉 JavaPoetMyClass应该实现MyInterface. 该方法addSuperinterface(TypeName)需要一个类型名称,但我没有找到如何将 aTypeSpec变成TypeName. 我发现的唯一方法是调用ClassName#get(String, String).

有没有更好的方法来实现这一点并直接使用接口的类型规范?

0 投票
1 回答
61 浏览

android-studio - Android Studio 使用 JavaPoet 库显示非常具体的错误错误

我已经使用 JavaPoet 库编写了一个注释处理器,并将其作为 Java 库模块包含在我的项目中。它编译并且工作正常。问题是 - Android Studio 内联编译器向我显示了不应该存在的错误。

  1. 由于某种原因,它无法识别参数中的省略号
    第一个错误
  2. 和上面一样。
    在此处输入图像描述
  3. 它表明没有将 Filer 类型作为参数的 writeTo 方法,尽管当您选择 Go To > Declaration 选项时显然有一个。正如我所提到的 - 它编译得很好。
    在此处输入图像描述

我已经尝试过:

  1. 清洁和重建项目- 没有工作
  2. 多次同步 gradle -没用
  3. 刷新 gradle 项目-没用
  4. 使用 File > Invalidate Cache/Restart 选项- 不起作用
  5. 删除 .gradle 和 .idea 文件夹并再次同步- 无效
  6. 从项目和磁盘中删除我的 Java 库模块并使用相同的类重新创建它- 也不起作用

总是相同的三个错误,所以我在这里很茫然。不得不提的是,当我将 JavaPoet 版本从 1.12.1 降级到 1.9.0 时,就会出现这个问题(Java 7 的兼容性对我的应用程序版本至关重要,因此更高的 Java 8 版本是不可能的)。

我的毕业文件:


这不会破坏交易,但会让人分心和烦人。您是否知道这种行为的原因可能是什么?

0 投票
1 回答
262 浏览

java - 如何从 javax.lang.model.VariableElement 获取类型和泛型类型?

我正在使用注释处理和 javapoet 库来生成一些源代码。

说,我有一个

而如果

印刷

类型:- java.util.Set<com.example.demo.test.model.User>

我如何获得 Set 类和 User 类,以便我可以用 javapoet 做这样的事情?

一些字符串比较可以完成工作,但似乎不是理想的方法。

0 投票
1 回答
180 浏览

java - 如何在 Java Poet 中添加函数的参数化返回类型

我将如何生成具有以下签名的方法?

问题:不确定如何添加返回类型:ServiceA<? extends ServiceB>

假设我有 ServiceA 和 ServiceB 的 FQCN。

我正在尝试的是下面的代码,但不起作用。

上面的代码生成以下代码:

任何线索将不胜感激。

0 投票
1 回答
109 浏览

java - 如何使用 javapoet 读取方法参数的注释

我正在尝试通过阅读带注释的方法来生成代码,例如

我想复制生成代码中的参数列表

如下所示:

但是当我尝试从 annotationProcessor 类中读取带注释的方法时

它将值打印为

它没有引用我可以用来创建 ParameterSpec 的参数注释。

有没有办法阅读参数的注释?

0 投票
1 回答
72 浏览

java - 如何在 Javapoet 中添加 CodeBlock 作为 MethodSpec 语句的一部分

我想创建一个 lambda 表达式,如:

我在 CodeBlock 代码中有 if-else 的所有逻辑,在 MethodSpec 方法中有父代码。

我正在尝试按如下方式添加此代码:

method.addStament("CompletableFuture.handle((s,t) -> $N)", code.build);

这显然是行不通的!只需要对 Lamda 部分的帮助。

任何帮助!

0 投票
1 回答
374 浏览

gradle - 在 IntelliJ 中集成我的自定义注释处理器 jar 时获取 java.lang.NoClassDefFoundError: com/squareup/javapoet/MethodSpec

我有一个使用一些注释的简单应用程序“客户端”,其中包含我编写的注释处理器的 .jar,应该使用 JavaPoet 将 java 类写入控制台。以下是我在“客户端”应用程序中为 build.gradle 所做的配置:

我已经在项目中启用了注释处理器,并给出了该注释处理器的完全限定路径。但是,当我进行 gradle 构建时,注释处理器运行并且我得到:

不知道我在这里做错了什么。

0 投票
1 回答
612 浏览

java - 使用 JavaPoet 处理 Java 注释 - 尝试为类型重新创建文件

我正在使用带有JavaPoet的 java 注释处理 API来生成文件和 maven 来编译我的项目。

它按预期工作,生成的文件在/target/generated-sources/annotations/sk/typek/generated/TestGeneratedClass.java.

但是,任何后续都mvn compileCaused by: javax.annotation.processing.FilerException: Attempt to recreate a file for type sk.typek.generated.TestGeneratedClass.

我知道我可以mvn clean在每次重新编译之前调用(然后它再次工作),但我不想这样做。我之前使用的其他注释处理库没有这个问题,所以他们以某种方式处理了它。

如果生成的文件已经存在,有没有办法“强制覆盖”?或者是否可以删除旧生成的文件(如果存在)作为我的注释处理代码的一部分?

我搜索了解决方案,但找不到任何有用的东西。

我的注释处理器如下所示:

0 投票
1 回答
114 浏览

java - javapoet如何生成注释和使用lombok?

当我使用 javapoet 时,有什么方法(和任何意义)可以使用 Lombok 吗?
这是示例:

当我尝试添加 Lombok 注释时(例如 -> Data.class"),我收到以下错误: