问题标签 [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.
java - 如何在 JavaPoet 中创建具有给定名称的类型?
在 JavaPoet 中,我需要创建一个TypeName
表示给定名称的内部类的实例。
我有一个TypeSpec.Builder classBuilder
外部班级。不知道下一步该做什么。
请注意,此内部类仅存在于生成的程序中,而不存在于生成程序中。
java - 使用 JavaPoet 实现生成的接口
我想使用JavaPoet生成一个接口和一个实现该接口的类。
但我正在努力告诉 JavaPoetMyClass
应该实现MyInterface
. 该方法addSuperinterface(TypeName)
需要一个类型名称,但我没有找到如何将 aTypeSpec
变成TypeName
. 我发现的唯一方法是调用ClassName#get(String, String)
.
有没有更好的方法来实现这一点并直接使用接口的类型规范?
android-studio - Android Studio 使用 JavaPoet 库显示非常具体的错误错误
我已经使用 JavaPoet 库编写了一个注释处理器,并将其作为 Java 库模块包含在我的项目中。它编译并且工作正常。问题是 - Android Studio 内联编译器向我显示了不应该存在的错误。
- 由于某种原因,它无法识别参数中的省略号
- 和上面一样。
- 它表明没有将 Filer 类型作为参数的 writeTo 方法,尽管当您选择 Go To > Declaration 选项时显然有一个。正如我所提到的 - 它编译得很好。
我已经尝试过:
- 清洁和重建项目- 没有工作
- 多次同步 gradle -没用
- 刷新 gradle 项目-没用
- 使用 File > Invalidate Cache/Restart 选项- 不起作用
- 删除 .gradle 和 .idea 文件夹并再次同步- 无效
- 从项目和磁盘中删除我的 Java 库模块并使用相同的类重新创建它- 也不起作用
总是相同的三个错误,所以我在这里很茫然。不得不提的是,当我将 JavaPoet 版本从 1.12.1 降级到 1.9.0 时,就会出现这个问题(Java 7 的兼容性对我的应用程序版本至关重要,因此更高的 Java 8 版本是不可能的)。
我的毕业文件:
这不会破坏交易,但会让人分心和烦人。您是否知道这种行为的原因可能是什么?
java - 如何从 javax.lang.model.VariableElement 获取类型和泛型类型?
我正在使用注释处理和 javapoet 库来生成一些源代码。
说,我有一个
而如果
印刷
类型:- java.util.Set<com.example.demo.test.model.User>
我如何获得 Set 类和 User 类,以便我可以用 javapoet 做这样的事情?
一些字符串比较可以完成工作,但似乎不是理想的方法。
java - 如何在 Java Poet 中添加函数的参数化返回类型
我将如何生成具有以下签名的方法?
问题:不确定如何添加返回类型:ServiceA<? extends ServiceB>
假设我有 ServiceA 和 ServiceB 的 FQCN。
我正在尝试的是下面的代码,但不起作用。
上面的代码生成以下代码:
任何线索将不胜感激。
java - 如何使用 javapoet 读取方法参数的注释
我正在尝试通过阅读带注释的方法来生成代码,例如
我想复制生成代码中的参数列表
如下所示:
但是当我尝试从 annotationProcessor 类中读取带注释的方法时
它将值打印为
它没有引用我可以用来创建 ParameterSpec 的参数注释。
有没有办法阅读参数的注释?
java - 如何在 Javapoet 中添加 CodeBlock 作为 MethodSpec 语句的一部分
我想创建一个 lambda 表达式,如:
我在 CodeBlock 代码中有 if-else 的所有逻辑,在 MethodSpec 方法中有父代码。
我正在尝试按如下方式添加此代码:
method.addStament("CompletableFuture.handle((s,t) -> $N)", code.build);
这显然是行不通的!只需要对 Lamda 部分的帮助。
任何帮助!
gradle - 在 IntelliJ 中集成我的自定义注释处理器 jar 时获取 java.lang.NoClassDefFoundError: com/squareup/javapoet/MethodSpec
我有一个使用一些注释的简单应用程序“客户端”,其中包含我编写的注释处理器的 .jar,应该使用 JavaPoet 将 java 类写入控制台。以下是我在“客户端”应用程序中为 build.gradle 所做的配置:
我已经在项目中启用了注释处理器,并给出了该注释处理器的完全限定路径。但是,当我进行 gradle 构建时,注释处理器运行并且我得到:
不知道我在这里做错了什么。
java - 使用 JavaPoet 处理 Java 注释 - 尝试为类型重新创建文件
我正在使用带有JavaPoet的 java 注释处理 API来生成文件和 maven 来编译我的项目。
它按预期工作,生成的文件在/target/generated-sources/annotations/sk/typek/generated/TestGeneratedClass.java
.
但是,任何后续都mvn compile
以Caused by: javax.annotation.processing.FilerException: Attempt to recreate a file for type sk.typek.generated.TestGeneratedClass
.
我知道我可以mvn clean
在每次重新编译之前调用(然后它再次工作),但我不想这样做。我之前使用的其他注释处理库没有这个问题,所以他们以某种方式处理了它。
如果生成的文件已经存在,有没有办法“强制覆盖”?或者是否可以删除旧生成的文件(如果存在)作为我的注释处理代码的一部分?
我搜索了解决方案,但找不到任何有用的东西。
我的注释处理器如下所示:
java - javapoet如何生成注释和使用lombok?
当我使用 javapoet 时,有什么方法(和任何意义)可以使用 Lombok 吗?
这是示例:
当我尝试添加 Lombok 注释时(例如 -> Data.class"),我收到以下错误: