gpt4 book ai didi

kotlin - 如何生成一个类,该类扩展了一个使用 kotlinpoet 实现通用接口(interface)的类

转载 作者:行者123 更新时间:2023-12-03 21:35:44 32 4
gpt4 key购买 nike

给定一个界面

interface Builder<R> {
fun build() : R
}

我如何生成使用 kotlinpoet 实现此接口(interface)的类 BooBuilder

我在文档中找不到关于创建通用接口(interface)(或类)的示例。

我想从什么开始

class BooBuilder(): Builder<Boo> { //...

我明白我应该开始

TypeSpec
.classBuilder("BooBuilder")
.addSuperinterface( /* I have no idea what to put here */ )
// add methods

最佳答案

你可以传递一个 ParameterizedTypeName作为 addSuperinterface 的参数.创建 ParameterizedTypeName你可以使用 KClass<*>.parameterizedBy扩展功能

示例

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


val booKClass = Boo::class

val booBuilderType = TypeSpec
.classBuilder("BooBuilder")
.addSuperinterface(Builder::class.parameterizedBy(booKClass))
.addFunction(
FunSpec.builder("build")
.addModifiers(KModifier.OVERRIDE)
.addStatement("TODO()")
.returns(booKClass)
.build()
)
.build()

val kotlinFile = FileSpec.builder("com.example", "BooBuilder")
.addType(booBuilderType)
.build()

kotlinFile.writeTo(System.out)

输出

package com.example    

class BooBuilder : Builder<Boo> {
override fun build(): Boo {
TODO()
}
}

关于kotlin - 如何生成一个类,该类扩展了一个使用 kotlinpoet 实现通用接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771512/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com