自Kotlin 1.1 起,可以使用 enumValues<T>() 和enumValueOf<T>() 函数以泛型的方式访问枚举类中的常量。 1.4.1、访问枚举变量属性 例: fun main(args: Array<String>) { println("name = " + Color.RED.name + "\tordinal = " + Color.RED.ordinal) println("name = " + Color.WHITE.name + "...
声明带属性的枚举,在每个常量创建的时候指定属性值 enumclassColor2(valr:Int,valg:Int,valb:Int){RED(255,0,0),GREEN(0,255,0),BLUE(0,0,255),ORANGE(255,255,0),YELLOW(0,255,255),WHITE(0,0,0);//这里必须要有分号,Kotlin中唯一必须使用分号的地方,如果在类中定义任何方法,则要使用分号把枚举...
这里的"when"branches是用来check the argument type。 funeval(e:Expr):Int=when(e){isNum->e.valueisSum->eval(e.left)+eval(e.right)else->throwIllegalArgumentException("Unknown expression")} 注意:"the last expression in a block is the result" funevalWithLogging(e:Expr):Int=when(e){isNum...
从Kotlin1.1开始,还有一些辅助方法可用:
inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: String?): T? { return java.lang.Enum.valueOf(T::class.java, type) } The example below doesn't compile due to: Type parameter bound for T in inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?):...
注意,valueOf()函数对大小写敏感,所以要确保传入的字符串与枚举常量的名称完全匹配。 4. 遍历枚举值 可以使用values()函数来获取枚举类中所有的枚举常量。这样就可以轻松地遍历枚举值了。 for (enumValue in MyEnum.values()) { println(enumValue) } ...
ex3_2_1_UsingWhenToDealWithEnumClasses enum class Color { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET } fun getMnemonic(color: Color) = when (color) { Color.RED -> "Richard" Color.ORANGE -> "Of" Color.YELLOW -> "York" Color.GREEN -> "Gave" Color.BLUE -> "Battle" Color...
inline fun <reified T : Enum<T>> valueOf(type: String, default: T): T { return try { java.lang.Enum.valueOf(T::class.java, type) } catch (e: IllegalArgumentException) { default } } 或者,如果你想要两者,请制作第二个: inline fun <reified T : Enum<T>> valueOf(type: String,...
*/ @SinceKotlin("1.1") public inline fun <reified T : Enum<T>> enumValueOf(name: String): T 我们可以这样使用原生类型数组: 代码语言:javascript 复制 val x: IntArray = intArrayOf(1, 2, 3) x[0] = x[1] + x[2] 5.字符串类型String 字符串用 String 类型表示。字符串是不可变的。
fun doLog(enumParamMap: EnumMap<RegisteredKey, String>) = api.log(enumParamMap.map{ it.key.name to it.value }.toMap()) It's more concise, but you're allocating a list and some pairs that you wouldn't be with your way of doing it. Share Follow edited Oct 9, 2019 at 15:45...