如何通过在Kotlin中使用枚举转换为NotNull
如何使用Kotlin
将以下代码转换为enum
类中的NotNull
?
注意:我在两个活动之间使用这个枚举,一个活动有两个适配器。
这里是枚举类
enum class Adapterx { ADAPTER_1, ADAPTER_2; companion object { fun fromOrdinal(ordinal: Int): Adapterx? { return Adapterx.values().firstOrNull { it.ordinal == ordinal } } } }
既然你不能限制ordinal: Int
参数,就像你定义它一样,如果你收到的序号不是枚举的一部分,或者是超出范围,你有两个选择:
- 返回一个默认值
- 抛出exception
恕我直言,这两种情况是合理的,如果你正确地文件的方法。
如果你要求一个不存在的序号,那么你只能返回一个默认值:
class KotlinEnumTest { enum class Adapterx { ADAPTER_1, ADAPTER_2; companion object { val defaultValue = ADAPTER_1 fun fromOrdinal(ordinal: Int): Adapterx = Adapterx.values().getOrElse(ordinal, { _ -> defaultValue }) } } @Test fun testEnumOrdinals() { val resultAdapter1 = Adapterx.fromOrdinal(0) Assert.assertEquals(Adapterx.ADAPTER_1, resultAdapter1) val resultAdapter2 = Adapterx.fromOrdinal(1) Assert.assertEquals(Adapterx.ADAPTER_2, resultAdapter2) // The following returns the default value ADAPTER_1 val resultOrdinalIndexOutOfBounds = Adapterx.fromOrdinal(2) Assert.assertEquals(Adapterx.ADAPTER_1, resultOrdinalIndexOutOfBounds) } }