首页 > 解决方案 > 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

任何人都可以为此提供任何解决方案吗?

标签: androidkotlinkotlinpoet

解决方案


我得到了我们如何function1(init: TestClass.() -> Unit)在函数中生成这种类型的参数的答案。我们需要使用 kotlin 诗人库的 LambdaTypeName 类。

val buildParameter = ParameterSpec.builder(FUNCTION_PARAMETER_NAME, LambdaTypeName.get(ClassName("", CLASS_TYPE_NAME), returnType = Unit::class.asTypeName())).build()


推荐阅读