如何通过在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) } }