Tengo un enum con algunos casos Foo y Bar. Si tengo una cadena "Foo", ¿cómo puedo crear una instancia de un Foo enumeración de eso? En C# sería Enum.Parse(...), hay un equivalente en Kotlin?

Actualmente, el mejor que he encontrado es crear una fábrica que enciende todas las cadenas posibles, pero que es propensa a errores y realiza mal para grandes enumeraciones.

para los recién llegados. leer este tutorial detallado sobre las enumeraciones en Kotlin. developine.com/enum-classes-in-kotlin-example
El enlace es solo para mostrarles «pageok». Supongo que está muerto?

OriginalEl autor Micah Zoltu | 2015-02-16

2 Comentarios

  1. 29

    Kotlin enum clases en la «estática» de la función valueOf para obtener enum entrada de cadena(como Java enumeraciones). Además tienen la «estática» de la función values para obtener todos los enum entradas. Ejemplo:

    enum class MyEnum {
      Foo, Bar, Baz
    }
    
    fun main(args : Array<String>) {
      println(MyEnum.valueOf("Foo") == MyEnum.Foo)
      println(MyEnum.valueOf("Bar") == MyEnum.Bar)
      println(MyEnum.values().toList())
    }
    Es posible anular esta? Por ejemplo, si yo quería para implementar mi propia versión de que fue insensible a mayúsculas-minúsculas.
    Es imposible, AFAIK es imposible Java también. La introducción de un método no es adecuado para su caso?
    Haciendo mi propio método está bien, pero sería bueno utilizar un método existente para que los usuarios no necesitan preocuparse acerca de lo que esta valueOfIgnoringCase método es que sólo uso valueOf como normal
    para los recién llegados. leer este tutorial detallado sobre las enumeraciones en Kotlin. developine.com/enum-classes-in-kotlin-example

    OriginalEl autor bashor

  2. 3

    Como bashor sugerido, uso MyEnum.valueOf() pero por favor tenga en cuenta que se lanza una excepción si el valor no puede ser encontrado. Recomiendo el uso de:

    enum class MyEnum {
      Foo Bar Baz
    }
    
    try {
       myVar = MyEnum.valueOf("Qux")
    } catch(e: IllegalArgumentException) {
       Log.d(TAG, "INVALID MyEnum value: 'Qux' | $e")
    }

    OriginalEl autor Paul Ardeleanu

Dejar respuesta

Please enter your comment!
Please enter your name here