如何在KotlinPoet中实现可比性?

如何在KotlinPoet中实现可比性?,kotlin,kotlinpoet,Kotlin,Kotlinpoet,于提交 如何为当前生成的类实现可比较的 存在ParameteredTypeName.get(Comparable::class,?)方法,但不清楚如何传递第二个参数。生成类时唯一可用的是它的ClassName 最简单的例子: FileSpec.builder("com.fleshgrinder", "KotlinPoet").apply { val className = ClassName("com.fleshgrinder", "KotlinPoet") addType(Ty

于提交

如何为当前生成的类实现
可比较的

存在
ParameteredTypeName.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
导入kotlin。任何
进口科特林。可比
KotlinPoet类:可比
我想要的是:

package com.fleshgrinder

class KotlinPoet : Comparable<KotlinPoet>
package com.fleshgrinder
KotlinPoet类:可比

ClassName
具有以下扩展方法:

fun ClassName.parameterizedBy(vararg typeArguments: TypeName)
以下是如何将其应用于您的用例:

val className = ClassName("com.fleshgrinder", "KotlinPoet")
val comparable = Comparable::class.asClassName().parameterizedBy(className)
请注意,由于存在错误,您需要手动添加以下导入:

import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy

ClassName
具有以下扩展方法:

fun ClassName.parameterizedBy(vararg typeArguments: TypeName)
以下是如何将其应用于您的用例:

val className = ClassName("com.fleshgrinder", "KotlinPoet")
val comparable = Comparable::class.asClassName().parameterizedBy(className)
请注意,由于存在错误,您需要手动添加以下导入:

import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy

谢谢你,我已经更新了答案!谢谢你,我已经更新了答案!