Comprobar si el valor está en enum python
Enum en Java es una palabra clave, una característica que se utiliza para representar un número fijo de valores bien conocidos en Java, Por ejemplo, Número de días en la semana, Número de planetas en el sistema solar, etc. Enumeración (Enum) en Java se introdujo en JDK 1.5 y es una de mis características favoritas de J2SE 5 entre Autoboxing y unboxing, Genéricos, varargs, y la importación estática. Uno de los usos comunes de Enum que surgió en los últimos años es el uso de Enum para escribir Singleton en Java, que es, con mucho, la forma más fácil de implementar Singleton y maneja varias cuestiones relacionadas con la seguridad de los hilos y la serialización de forma automática. Por cierto, Java Enum como un tipo es más adecuado para representar bien conocido conjunto fijo de las cosas y los estados, por ejemplo, que representa el estado de la Orden como NUEVO, PARCIALMENTE LLENO, LLENO, o CERRADO.
En este tutorial de Java Enum, veremos diferentes ejemplos de Enum en Java y aprenderemos a utilizar Enum en Java. El enfoque de este tutorial Java Enum será en diferentes características proporcionadas por Enum en Java y cómo utilizarlos.
¿Se puede utilizar == en los enums Java?
Dado que sólo existe una instancia de cada constante enum, se permite utilizar el operador == en lugar del método equals al comparar dos referencias a objetos si se sabe que al menos una de ellas hace referencia a una constante enum.
¿Cómo comprobar enum contiene valor en Java 8?
Hay varias formas de comprobar si un enum contiene el valor de cadena dado en Java. Puede utilizar el método valueOf() para convertir la cadena en un valor enum en Java. Si la cadena es un valor enum válido, el método valueOf() devuelve un objeto enum. En caso contrario, lanza una excepción.
Java enum valorde
Si espera que la comprobación falle a menudo, puede que sea mejor utilizar un bucle simple como otros han mostrado – si sus enums contienen muchos valores, quizás construya un HashSet o similar de sus valores enum convertidos a una cadena y consulte ese HashSet en su lugar.
Esto combina todos los enfoques de los métodos anteriores y debería tener un rendimiento equivalente. Se puede utilizar para cualquier enum, inlines la solución “Editar” de @Richard H, y utiliza excepciones para los valores no válidos como @bestsss. La única desventaja es que es necesario especificar la clase, pero eso lo convierte en un método de dos líneas.
Java string enum
El siguiente ejemplo define una enumeración llamada PetType que consiste en campos de bits individuales. A continuación, llama al método IsDefined con los posibles valores subyacentes de la enumeración, nombres de cadena y valores compuestos que resultan de establecer varios campos de bits.
Si las constantes de enumType definen un conjunto de campos de bits y value contiene los valores, nombres o valores subyacentes de múltiples campos de bits, el método IsDefined devuelve false. En otras palabras, para las enumeraciones que definen un conjunto de campos de bits, el método sólo determina si un único campo de bits pertenece a la enumeración. Para determinar si hay varios campos de bits definidos en un tipo de enumeración etiquetado con el atributo FlagsAttribute, puede llamar al método HasFlag.
Si enumType es una enumeración que se define utilizando el atributo FlagsAttribute, el método devuelve false si se establecen varios campos de bits en value pero value no corresponde a un valor de enumeración compuesto, o si value es una concatenación de cadenas de los nombres de varios indicadores de bits. En el siguiente ejemplo, se define una enumeración Pets con el atributo FlagsAttribute. El método IsDefined(Type, Object) devuelve false cuando se le pasa un valor de enumeración que tiene dos campos de bits (Mascotas.Perro y Mascotas.Gato) definidos, y cuando se le pasa la representación de cadena de ese valor de enumeración (“Perro, Gato”).
Java comprobar si la cadena está en enum
La mayoría de los nuevos desarrolladores Java aprenden rápidamente que, en general, deben comparar cadenas Java utilizando String.equals(Object) en lugar de utilizar ==. Esto se enfatiza y refuerza a los nuevos desarrolladores repetidamente porque casi siempre quieren comparar el contenido de la cadena (los caracteres reales que forman la cadena) en lugar de la identidad de la cadena (su dirección en la memoria). Sostengo que deberíamos reforzar la noción de que == puede utilizarse en lugar de Enum.equals(Object). En el resto de esta entrada expongo mi razonamiento para esta afirmación.
La segunda razón mencionada anteriormente (“posiblemente más legible”) es obviamente una cuestión de opinión, pero la parte sobre “menos verboso” puede ser acordada. La primera razón por la que generalmente prefiero == al comparar enums es una consecuencia de cómo la Especificación del Lenguaje Java describe los enums. La sección 8.9 (“Enums”) dice: Es un error en tiempo de compilación intentar instanciar explícitamente un tipo enum. El método clone final en Enum asegura que las constantes enum nunca puedan ser clonadas, y el tratamiento especial del mecanismo de serialización asegura que nunca se creen instancias duplicadas como resultado de la deserialización. La instanciación reflexiva de tipos enum está prohibida. Juntas, estas cuatro cosas aseguran que no existan instancias de un tipo enum más allá de las definidas por las constantes enum.