You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用KotlinPoet生成Kotlin类Companion的静态扩展属性

解决方案

该需求完全可以通过KotlinPoet实现,核心是正确指定扩展属性的接收者类型为MyClass的伴生对象类型,无需额外特殊配置。

实现示例代码

import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.LONG

fun main() {
    // 构造MyClass.Companion的类型,注意替换第一个参数为MyClass实际所在的包名
    val myClassCompanion = ClassName("com.your.package", "MyClass", "Companion")
    // 构建目标扩展属性
    val classIDProperty = PropertySpec.builder("classID", LONG)
        .receiver(myClassCompanion) // 指定接收者为伴生对象
        .getter(
            PropertySpec.getterBuilder()
                .addStatement("return 0x100")
                .build()
        )
        .build()
    // 输出代码,可替换writeTo参数指定输出到对应目录
    val fileSpec = FileSpec.builder("com.your.output.package", "GeneratedExt")
        .addProperty(classIDProperty)
        .build()
    fileSpec.writeTo(System.out)
}

输出验证

运行上述代码后会直接输出你需要的目标代码:

public val MyClass.Companion.classID: Long
  get() = 0x100

注意事项

  • 如果你的MyClass的伴生对象设置了自定义名称,只需把ClassName构造参数里的"Companion"替换为自定义的伴生对象名即可
  • 注意替换ClassName第一个参数的包名字段为MyClass实际所在的包名,避免生成错误的全类名引用

内容的提问来源于stack exchange,提问作者Junior.CodingCamp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:08