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

如何通过KotlinPoet省略生成类型与属性的冗余public修饰符?

如何用KotlinPoet省略类型与属性中的冗余public修饰符

当然可以!KotlinPoet完全支持避免生成冗余的public修饰符,毕竟Kotlin里类、属性等成员的默认可见性就是public,没必要多写。我分两种Builder给你说明操作方式:

TypeSpec.Builder(类、接口等类型)

KotlinPoet的TypeSpec.Builder默认不会为类型添加public修饰符,除非你手动指定。所以只要不调用addModifiers(KModifier.PUBLIC),生成的类/接口就不会带冗余的public。

举个例子:

// 正确写法:不指定public修饰符
val generatedClass = TypeSpec.classBuilder("User")
    .addProperty(PropertySpec.builder("username", String::class)
        .initializer("%S", "johndoe")
        .build())
    .build()

生成的代码会是:

class User {
    val username = "johndoe"
}

如果之前误加了addModifiers(KModifier.PUBLIC),删掉这一行就搞定了——毕竟Kotlin默认类就是public,没必要显式声明。

PropertySpec.Builder(属性)

属性的逻辑和类型完全一致:不手动添加KModifier.PUBLIC,KotlinPoet就不会生成冗余的public修饰符。

比如:

// 正确写法:不指定public修饰符
val generatedProperty = PropertySpec.builder("email", String::class)
    .initializer("%S", "john@example.com")
    .build()

生成的属性代码是:

val email = "john@example.com"

只有当你需要非默认可见性(比如private、internal)时,才需要调用addModifiers()指定对应的修饰符。

总结一下:只要遵循Kotlin的默认可见性规则,不在Builder中手动添加KModifier.PUBLIC,生成的代码就会自动省略冗余的public修饰符,完全符合Kotlin的编码习惯。

内容的提问来源于stack exchange,提问作者m_katsifarakis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:37:55