问题标签 [kotlinpoet]

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 回答
2492 浏览

java - Kotlin/KAPT 生成的 Kotlin 类不被识别为类成员,但它在方法内部

我已经编写了一个注释处理器,它为我的类生成一个构建器类@DataBuilder

我用这个注释注释的类位于com.my.package.model包中,生成的构建器类也位于同一个包com.my.package.model中,但是在生成的目录中,当然build/generated/source/kapt/debug/com/my/package/model/MyModelBuilder.kt,我可以在我的模型类中使用这些生成的类(用 Kotlin 编写)

但是不能在 java 类中使用生成的MyModelBuilderKotlin 类作为类成员

Android Studio 可以识别该类,但我遇到了这个编译问题

这很奇怪,因为我只能在方法内部使用这个生成的构建器类,这段代码编译得很好:

这里有人可以帮助我理解这种行为以及如何解决这个问题吗?提前,谢谢!

更新

我刚刚使用必要的代码创建了这个 repo 来复制问题 https://github.com/epool/HelloKapt

该项目在克隆和运行后工作正常,要复制问题,请取消注释此行https://github.com/epool/HelloKapt/blob/master/app/src/main/java/com/nearsoft/hellokapt/app /MainActivity.java#L13

注意:如果我将 MainActivity.java 类转换为 Kotlin(MainActivity.kt) 问题是不可重现的并且工作正常,但由于到目前为止的一些项目限制,我不想这样做

Kotlin 问题: https ://youtrack.jetbrains.net/issue/KT-24591

0 投票
1 回答
249 浏览

kotlinpoet - 如何动态定义带参数的代码块

我被这个特性卡住了,下面是要生成的预期代码,参数的总数不是一个固定的数字,可能有 2 个,或者 3 个或更多。

val 实例:InstanceType = Instance(parameter1, parameter2)

这是在一个函数中,所以我只知道我应该使用 .addCode(CodeBlock.of("%L", PropertySpec))

但是我没有找到一种方法来定义需要传入动态参数的代码块。有什么建议吗?

0 投票
1 回答
459 浏览

kotlin - 如何使用 KotlinPoet 生成 `by lazy`

我想生成这样的代码:

使用 KotlinPoet:

如何生成by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED)我在文档中找不到一些有用的 API 。

0 投票
1 回答
536 浏览

android - 如何在kotlin诗人中返回函数

我正在使用 KotlinPoet 进行注释处理,但我遇到了一个问题。我需要在生成的类中返回函数,但我不确定 KotlinPoet 能做到吗?如果你有一些经验,请帮助我。

我能做到的:

我需要做的

0 投票
1 回答
619 浏览

kotlin - Kotlinpoet 如何添加内部对象类定义?

我正在尝试在类中生成对象定义。这是一个提炼的版本:

0 投票
2 回答
869 浏览

kotlin - 如何获取 javax.lang.model.element.Element 实例的类型

我正在关注Kotlin和KotlinPoet 文档中的 Hello World of Annotation Processing,并尝试为 Kotlin 实现一个通用构建器。我想一般为带注释的数据类中的每个字段创建一个方法,并为其参数提供与字段相同的名称和类型。问题是,鉴于我拥有的实例,我无法找到该字段的类型。这是我到目前为止所管理的:javax.lang.model.element.Element

如何找到字段的类型?我在文档中读到您应该使用方法asType(),但这会返回一个TypeMirror. 我真的不知道如何从这里继续。欢迎任何建议。

0 投票
3 回答
486 浏览

kotlin - Kotlin 反射:如何知道 Kotlin 类是否标有“内部”可见性修饰符

我正在使用 KotlinPoet 和 Auto Service 自动生成代码。我没有找到任何方法来知道带注释的类是否具有“内部”修饰符,因此我可以创建另一个具有相同修饰符的类。例如:

所以我认为使用 Kotlin Reflection 可以获得这些信息,但没有运气。

使用注释器处理器,我可以获得 KClass,但可见性显示为“公共”: 在此处输入图像描述

关于如何做的任何线索?

0 投票
1 回答
141 浏览

kotlinpoet - 如何将函数参数强制到新行上?

我希望在新行上生成所有函数参数,如下所示:

我怎样才能做到这一点?目前参数列表任意换行。我有未知数量的函数参数要生成。

0 投票
1 回答
1514 浏览

java - java.lang.NoSuchMethodError:com.squareup.kotlinpoet.PropertySpec$Companion.varBuilder

我正在尝试将此第三方添加到我的项目中,该第三方使用带有 kotlinpoet 的注释处理来为 firebase 或任何分析工具上的日志用户事件生成分析类,但我遇到了这个问题

这是我的 gradle 文件

应用程序构建 gradle

项目构建gradle

渐变属性

请记住,我正在尝试将这个第三方女巫添加到我的项目中,在其他项目上工作正常,但在我的项目上没有工作。

0 投票
1 回答
707 浏览

kotlin - How do I generate a class which extends a class which implements a generic interface using kotlinpoet

Given an interface like

How do I generate a class BooBuilder which implements this interface using kotlinpoet.

I couldn't find an example on creating a generic interface (or class) in the documentation.

what I would like would start with

I understand that I should start with