android - Android - 如何使用 Kotlin Poet 库生成类型安全的构建器函数
问题描述
我正在尝试使用 kotlin 诗人库生成一个 kotlin 类,它应该具有一个函数和一个内部静态类,如下所示。
class SampleClass{
class TestClass{
lateinit var id: String
lateinit var name: String
}
fun function1(init: TestClass.() -> Unit) {
val trackPhoneNumberClicked = TestClass().apply(init)
val event = Event.Builder.from(testData.getTestDataById("testdataid")!!)
.apply {
addProperty("id", trackPhoneNumberClicked.id)
addProperty("name", trackPhoneNumberClicked.name)
}
.build()
}
}
我可以生成SampleClass和内部类TestClass但我无法使用此参数和主体创建 function1。
github 之类的 kotlin 诗人库。https://github.com/square/kotlinpoet
任何人都可以为此提供任何解决方案吗?
解决方案
我得到了我们如何function1(init: TestClass.() -> Unit)
在函数中生成这种类型的参数的答案。我们需要使用 kotlin 诗人库的 LambdaTypeName 类。
val buildParameter = ParameterSpec.builder(FUNCTION_PARAMETER_NAME, LambdaTypeName.get(ClassName("", CLASS_TYPE_NAME), returnType = Unit::class.asTypeName())).build()
推荐阅读
- reactjs - 故事书迁移到 CSF 的打字稿问题
- java - Selenium 中的 NullPointerException 与 java
- xslt - 在忽略空白值并在 XSLT 中添加 LineAmount 时删除重复项
- python - Pipenv shell 命令创建新的 venv 而不是加载现有的
- javascript - 在中使用 window.history.replaceState() 是否安全?
- javascript - 如何从不是数据库中的列的实体中返回额外的字段?
- node.js - 获取“被 CORS 策略阻止:请求的资源上不存在‘Access-Control-Allow-Origin’标头。” 使用 Axios 使用 MERN 堆栈
- database-design - 如何将自定义日志存储到数据库
- flutter - 解码飞镖中的音频缓冲区
- sql - 使用来自jsonb的milis将间隔添加到时间戳