首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在KotlinPoet中实现可比?

如何在KotlinPoet中实现可比?
EN

Stack Overflow用户
提问于 2018-05-11 15:57:34
回答 1查看 712关注 0票数 0

粉碎机GitHub上提交。

如何为当前正在生成的类实现Comparable

ParameterizedTypeName.get(Comparable::class, ?)方法,但尚不清楚如何传递第二个参数。生成类时唯一可用的东西是类的ClassName

最起码的例子:

代码语言:javascript
复制
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)

它产生:

代码语言:javascript
复制
package com.fleshgrinder

import kotlin.Any
import kotlin.Comparable

class KotlinPoet : Comparable<Any>

我想要的是:

代码语言:javascript
复制
package com.fleshgrinder

class KotlinPoet : Comparable<KotlinPoet>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 16:01:16

ClassName有以下扩展方法:

代码语言:javascript
复制
fun ClassName.parameterizedBy(vararg typeArguments: TypeName)

下面是如何将其应用于用例的方法:

代码语言:javascript
复制
val className = ClassName("com.fleshgrinder", "KotlinPoet")
val comparable = Comparable::class.asClassName().parameterizedBy(className)

请注意,由于使用了IDE虫,您需要手动添加以下导入:

代码语言:javascript
复制
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50296075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档