Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

501
Vistas
¿Kotlin le permite asignar un valor personalizado a la enumeración?

Esto arroja el error: Excepción en el hilo "principal" java.lang.IllegalArgumentException: Sin enumeración constante Color.red

 enum class Color(val value: String = "") { RED("red"), YELLOW("yellow"), BLUE("blue") } fun main() { print(Color.valueOf("red")) }

Lo anterior solo funcionará si cambio la declaración de impresión a:

 print(Color.valueOf("RED"))

¿Es posible usar una cadena personalizada para asignar a un valor de enumeración usando valueOf?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Como descubrió, el método enum valueOf() busca por el nombre de la constante de enumeración, no por las propiedades que agregue.

Pero puede agregar fácilmente su propio método de búsqueda, utilizando cualquier criterio que desee:

 enum class Color(val hue: String) { RED("red"), YELLOW("yellow"), BLUE("blue"); companion object { fun forHue(hue: String) = values().find{ it.hue == hue } } }

Una llamada a Color.forHue("red") devuelve la instancia de Color.RED como se esperaba.

(Este es probablemente el enfoque más simple, pero no el más eficiente; vea respuestas como esta ).

over 4 years ago · Santiago Trujillo Denunciar

0

No, pero puede escribir su propio método y obtener el valor por iteración, when o mapa.

Además, no puede anular valueOf .

over 4 years ago · Santiago Trujillo Denunciar

0

Puede implementar su propio valueOf , que funciona sin distinción entre mayúsculas y minúsculas:

 enum class Color(val value: String = "") { RED("red"), YELLOW("yellow"), BLUE("blue"); companion object { //TODO: gimme a better name fun customValueOf(val: String) = valueOf(val.toUpperCase()) } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda