如何为当前正在生成的类实现Comparable?
有ParameterizedTypeName.get(Comparable::class, ?)方法,但尚不清楚如何传递第二个参数。生成类时唯一可用的东西是类的ClassName。
最起码的例子:
FileSpec.builder("com.fleshgrinder", "KotlinPoet").apply {
val className = ClassName("com.fleshgrinder", "KotlinPoet")
addType(TypeSpec.classBuilder(className).apply {
addSuperinterface(ParameterizedTypeName.get(Comparable::class, Any::class))
}.build())
}.build().writeTo(System.out)它产生:
package com.fleshgrinder
import kotlin.Any
import kotlin.Comparable
class KotlinPoet : Comparable<Any>我想要的是:
package com.fleshgrinder
class KotlinPoet : Comparable<KotlinPoet>发布于 2018-05-11 16:01:16
ClassName有以下扩展方法:
fun ClassName.parameterizedBy(vararg typeArguments: TypeName)下面是如何将其应用于用例的方法:
val className = ClassName("com.fleshgrinder", "KotlinPoet")
val comparable = Comparable::class.asClassName().parameterizedBy(className)请注意,由于使用了IDE虫,您需要手动添加以下导入:
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedByhttps://stackoverflow.com/questions/50296075
复制相似问题