带有类型参数的 Kotlin Poet 超级接口

Kotlin Poet super interface with type argument

我正在尝试生成一个 object,它实现了一个带有类型参数的接口,如下例所示:

object HelloWorld : Feature<Intent>

我可以像下面的代码一样生成实现我的接口的对象:

val typeSpecBuilder = TypeSpec.objectBuilder("HelloWorld")
typeSpecBuilder.addSuperinterface(
      ClassName(
               "com.example.mylib",
               "Feature"
      )

如何将 type argument 传递给 interface

您可以使用parameterizedBy()方法来使用泛型。如果IDE检测不到,可以手动导入。

手动导入plusParameter

import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.plusParameter

并像下面这样使用:

val typeSpecBuilder = TypeSpec.objectBuilder(feature.featureName)
typeSpecBuilder.addSuperinterface(
      ClassName(
            "com.raqun.icarus.core",
            "Feature"
      ).plusParameter(ClassName("com.example.myawesomeclass", "MyAwesomeClass"))
)