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

如何获取Kotlin中密封类的成员数量?

获取Kotlin密封类的成员数量

当然有办法啦!针对你给出的Foo密封类,我们可以利用Kotlin的反射API轻松拿到它的直接成员数量。

核心方法:使用sealedSubclasses属性

Kotlin的密封类反射提供了sealedSubclasses属性,它会返回所有直接继承该密封类的子类集合。我们只需要取这个集合的size就能得到成员数量。

比如针对你的示例代码:

sealed class Foo {
    object Bar : Foo()
    data class Baz(val m: String) : Foo()
}

fun main() {
    // 获取直接子类数量
    val memberCount = Foo::class.sealedSubclasses.size
    println(memberCount) // 输出:2
}

注意事项

  • 这个方法统计的是直接子类:如果你的密封类有间接子类(比如Baz再派生出一个子类),sealedSubclasses不会包含这类间接子类。不过通常我们说密封类的"成员"指的就是这些直接定义的子类,所以这个方法完全满足你的需求。
  • 反射依赖:如果是JVM项目,需要在构建脚本中添加kotlin-reflect依赖才能使用这个API。比如在Gradle中:
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    

如果你的场景需要统计所有可能的子类(包括间接的),可以基于sealedSubclasses做递归遍历,但这种情况在实际开发中比较少见。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:19:11