cómo convertir a NotNull usando enum en Kotlin

¿Cómo puedo convertir el siguiente código a NotNull aceptado dentro de la class enum usando Kotlin ?

Nota: estoy usando esta enumeración entre dos actividades y una actividad tiene 2 adaptadores.

Aquí está la class enum

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

Como no puede restringir el ordinal: Int parámetro ordinal: Int como lo ha definido, tiene dos opciones si recibe un ordinal que no es parte de la enumeración o está fuera de límites:

  • Devuelve un valor pnetworkingeterminado
  • Lanza una exception

En mi humilde opinión, ambos casos son plausibles si documenta adecuadamente el método.

Aquí hay un caso en el que solo devuelve un valor pnetworkingeterminado si solicita un ordinal que no existe:

 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) } } 
  • esperando la declinación del miembro
  • ¿Necesito saber por qué? y si cambio esta línea a "println (nombre + dos)" ¿se ha resuelto el error?
  • ¿Cómo get identificadores comprobados en ListView a través de Kotlin?
  • Problemas de configuration de Kotlin Room en Android Studio
  • Con el complemento 'kotlin-kapt', Android Studio no proporciona errores específicos sobre Dagger 2
  • Verificación nula en caso de condiciones
  • ¿Cómo usar una biblioteca reutilizable en kotlin, con Android y javascript?
  • Carga GIF usando la versión 4.2.0 de deslizamiento en Kotlin
  • La igualdad de identidad para los arguments de los types Int e Int está en desuso
  • Cómo aplicar el tipo genérico con la interoperabilidad de Kotlin
  • Tipo genérico de Kotlin, Falló la inferencia de tipo