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) } } 
  • ¿Cómo orderar la list de objects en caso de order insensible?
  • Verticle (s) de Vert.x configuration JSON / YAML (preferible por entorno)
  • Reglas JUot de Kotlin
  • Acceso a la function de extensión de Kotlin Campo privado de Java
  • Recurso esperado de tipo ID
  • Android / Kotlin: reference no resuelta: madera
  • Enlace de datos de Kotlin y Android (BuildTools 2.0.0)
  • Kotlin: cadena de formatting
  • Kotlin kapt no puede ver las annotations de soporte
  • Haga que una class no genérica tome un argumento genérico en el constructor
  • ¿Debo usar @Repository cuando solo uso JdbcTemplate en mi class DAO?