Android-如何使用Kotlin Poet库生成类型安全的生成器函数

时间:2018-12-15 20:51:47

标签: android kotlin kotlinpoet

我正在尝试使用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

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

1 个答案:

答案 0 :(得分:0)

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

  

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