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

如何通过modeName属性获取Kotlin枚举类ParticleMode的实例

根据modeName获取Kotlin枚举实例的实现方案

方法一:直接遍历枚举项查找

在枚举类的伴生对象中添加查找方法,遍历所有枚举实例匹配modeName:

enum class ParticleMode(val modeName: String) {
    ABOVEHEAD("abovehead"),
    BELOWHEAD("belowhead");

    companion object {
        fun fromModeName(modeName: String): ParticleMode? {
            return entries.find { it.modeName == modeName }
        }
    }
}

调用方式:

val targetMode = ParticleMode.fromModeName("abovehead") // 返回ParticleMode.ABOVEHEAD

找不到匹配项时返回null,适合需要容错的场景。

方法二:预构建映射表提升效率

如果需要频繁执行查找操作,提前用associateBy构建modeName到枚举实例的映射表,避免每次遍历:

enum class ParticleMode(val modeName: String) {
    ABOVEHEAD("abovehead"),
    BELOWHEAD("belowhead");

    companion object {
        private val modeToInstanceMap = entries.associateBy(ParticleMode::modeName)
        
        fun fromModeName(modeName: String): ParticleMode? {
            return modeToInstanceMap[modeName]
        }
    }
}

这种方式查找时间复杂度为O(1),性能更优。

方法三:找不到时抛出异常

如果业务要求必须找到匹配项,可在方法中抛出异常替代返回null:

fun fromModeName(modeName: String): ParticleMode {
    return modeToInstanceMap[modeName] ?: throw IllegalArgumentException("不存在modeName为$modeName的ParticleMode枚举项")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:10:32