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

Kotlin中如何通过字符串访问枚举类的属性?

实现方案

可以直接通过Kotlin枚举内置的名称匹配能力实现该逻辑,不需要额外维护映射关系。

基础实现(直接匹配,匹配失败抛异常)

所有Kotlin枚举类默认自带valueOf()静态方法,传入枚举项的声明名称字符串即可获取对应枚举实例,直接访问location属性即可:

enum class Regions(val location: String){
   REGION_1("London"),
}

fun access(name: String): String {
    return Regions.valueOf(name).location
}

调用示例:

// 正常调用,返回"London"
val loc = access("REGION_1")

注意事项:

  • 传入的字符串必须和枚举项的常量名完全一致,大小写敏感,传入不匹配的名称(比如"region_1"、"London")时会抛出IllegalArgumentException。
  • 也可以用Kotlin标准库提供的泛型方法enumValueOf<Regions>(name)实现同样效果,逻辑和枚举类自带的valueOf()完全一致。

安全实现(匹配失败返回null,不抛异常)

如果需要兼容非法入参场景,可以通过遍历所有枚举项匹配名称,避免崩溃:

// Kotlin 1.9+版本用entries获取枚举项列表
fun accessSafe(name: String): String? {
    return Regions.entries.find { it.name == name }?.location
}

// Kotlin 1.9以下版本用values()获取枚举项数组
fun accessSafeLowVersion(name: String): String? {
    return Regions.values().find { it.name == name }?.location
}

这个实现下如果传入的名称找不到对应枚举项,会直接返回null,不会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:33:40