enum class Foo(val rawValue: Int) { FIRST(1), SECOND(2); companion object { fun from(value: Int) = entries.firstOrNull { it.rawValue == value } } } 这里也可以 return entries.associateBy(Foo::value)[rawValue] 这样就可以: Foo.from(1) 来实现最终的效果了。 思考 那么如果你有很多...
*/enumclassDirection{LEFT,RIGHR}/** * 枚举初始化 * 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值 */enumclassNumber(varnum:Int){ONE(1),TWO(2)}/** * 枚举常量匿名类 */enumclassStudent{GOOD_STUDENT{override funsay(){println("好学生")}},BAD_STUDENT{override funsay(){...
枚举(Enum):枚举是一种特殊的类,用于定义一组固定的常量。每个枚举常量都是枚举类的一个实例。 Int 类型的 switch 语句:在 Java 和 Kotlin 中,switch语句可以用于整数类型(如int或Int),但也可以用于枚举类型。 相关优势 可读性:使用枚举和switch语句可以使代码更加清晰和易于理解。
importandroidx.annotation.IntDefclassSexTest1{companionobject{privateconstvalMAN=101privateconstvalWOMEN=102}privatevarsex:Int=0//设置性别funsetSex(sex:Int){this.sex=sex}//获取性别fungetSex():String{if(MAN==sex)return"男"returnif(WOMEN==sex)"女"else"未知"}}//当我们定义了一个男女的final整型...
我们知道在c中,enum类型默认是int类型,它们之间可以自动转换,但在c++中却不是这样的。 截取如下: c++编译器支持从enum类型自动转换为int,但反过来是不支持的。需要进行强制转换,有代码如下: #include <stdio.h> #include <stdlib.h> enum type { TYPE_1 = 0, ...
在Kotlin 中,将 Int 类型转换为枚举类型通常涉及使用枚举类的 values() 方法结合索引访问,或者使用 enumValueOf() 函数。 以下是两种常见的方法: 方法一:使用 values() 方法和索引访问 如果你知道 Int 值与枚举常量在 values() 数组中的索引对应,你可以直接使用索引访问来获取枚举常量。 kotlin enum class Direct...
package enum /*** 枚举最常用的方法* 定义枚举常量 , 使用逗号隔开* 每个枚举常量都是一个对象** 这里定义了 左右 两个方向*/enum class Direction{LEFT, RIGHR}/*** 枚举初始化* 定义枚举常量时 , 为其声明一个成员变量 , 可以为其初始化一个值*/enum class Number (var num : Int){ONE(1),TWO(...
EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值,若未匹配成功,会抛出IllegalArgumentException EnumClass.values(): Array<EnumClass> // 以数组的形式,返回枚举值 获取枚举相关信息: val name: String //获取枚举名称 val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序 ...
enum class Number (var num : Int){ ONE(1), TWO(2) } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. III. 枚举类匿名类 枚举类抽象方法 :枚举类中可以定义枚举常量的抽象方法 ; ① 实现方式 :每个 枚举常量 必须在 匿名类中 实现此处定义的抽象方法 ; ...
*/ public final val ordinal: Int 1.5.3、实现了Comparable接口 这也是我们能获取枚举常量位置的原因。 这是Enum.kt源文件。让大家看看它实现了Comparable接口 public abstract class Enum<E : Enum<E>>(name: String, ordinal: Int): Comparable<E>{ ... } 再来看看Comparable.kt里面做了些什么。其实...