with values example enum java enums set

values - numeric enum java



Cuándo usar Enum o Collection en Java (6)

Cuando los elementos se conocen por adelantado y no cambian, una enumeración es apropiada.

Si los elementos pueden cambiar durante el tiempo de ejecución, use un conjunto.

¿Bajo qué circunstancias es una enumeración más apropiada que, por ejemplo, una Colección que garantiza elementos únicos (un implementador de java.util.Set, supongo ...)?

(Esto es una especie de seguimiento de mi pregunta anterior)


En algunas situaciones, su negocio requiere la creación de nuevos elementos, pero al mismo tiempo, la lógica comercial se basa en algunos elementos fijos. Para los fijos quieres una enumeración, los nuevos obviamente requieren algún tipo de colección / db.

He visto proyectos que utilizan una colección para este tipo de elementos, lo que resulta en una lógica empresarial que depende de datos que el usuario puede eliminar. Nunca haga esto, pero cree una enumeración separada para las fijas y una colección para las demás, tal como se requiere.

Otra solución es usar una colección con objetos inmutables para los valores fijos. Estos elementos también podrían residir en un archivo db, pero tienen un indicador adicional para que los usuarios no puedan actualizarlo o eliminarlo.


Excelentes respuestas: intentaré resumir, solo por mi propia referencia, parece que debería usar enumeraciones en dos situaciones:

Todos los valores que necesita son conocidos en tiempo de compilación y cualquiera de los siguientes:

  • quieres un mejor rendimiento que tus implementaciones de colección habituales
  • desea limitar los valores potenciales a los especificados en tiempo de compilación

Con los enlaces Colección sobre enumeración que Jon proporcionó, puede obtener los beneficios del rendimiento y la seguridad enum como un detalle de implementación sin incorporarlo en su diseño general.

Wiki de la comunidad, por favor edite y mejore si lo desea.


Nota: puede tener ambos con un EnumSet.


No soy un gurú de Java, pero supongo que usaría la enumeración cuando quisiera garantizar un conjunto de valores determinado, y usar una colección cuando desee garantizar la exclusividad. Ejemplo sería enumerar los días de la semana (no puede tener "funday") y tener una colección de SSN (¡ejemplo genérico que conozco!)


Básicamente cuando se trata de un conjunto de valores bien definido y fijo que se conoce en tiempo de compilación.

Puede usar una enumeración como un conjunto muy fácilmente (con EnumSet ) y le permite definir el comportamiento, hacer referencia a los elementos por su nombre, encenderlos, etc.