как преобразовать в NotNull с помощью перечисления в Котлин

Как преобразовать следующий код в принятый NotNull внутри класса enum , используя Kotlin ?

Примечание: я использую это перечисление между двумя действиями, а одно действие имеет 2 адаптера.

Здесь перечислены классы enum

 enum class Adapterx { ADAPTER_1, ADAPTER_2; companion object { fun fromOrdinal(ordinal: Int): Adapterx? { return Adapterx.values().firstOrNull { it.ordinal == ordinal } } } } 

Поскольку вы не можете ограничить ordinal: Int параметр ordinal: Int как вы его определили, у вас есть два варианта, если вы получаете порядковый номер, который не является частью перечисления, или выходит за пределы:

  • Возврат значения по умолчанию
  • Выбросить исключение

ИМХО оба случая правдоподобны, если вы правильно документируете этот метод.

Вот случай, когда вы возвращаете только значение по умолчанию, если вы запрашиваете порядковый номер, который не существует:

 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) } }