Miré debajo del capó para EnumSet.allOf
y parece muy eficiente, especialmente para enums con menos de 64 valores.Enum.values () vs EnumSet.allOf(). ¿Cuál es más preferible?
Básicamente todos los conjuntos comparten la única matriz de todos los posibles valores enum y la única otra información es una máscara de bits que en el caso de allOf
se establece de una sola vez.
Por otro lado Enum.values () parece ser un poco de magia negra. Además, devuelve una matriz, no una colección, por lo que en muchos casos debe decorarse con Arrays.asList() para que se pueda utilizar en cualquier lugar que espere la recopilación.
¿Entonces, debería ser EnumSet.allOf
ser más preferible a Enum.values
?
Más específicamente, qué forma de for
iterador se debe utilizar:
for (final MyEnum val: MyEnum.values());
o
for (final MyEnum val: EnumSet.allOf(MyEnum.class));
@ alexander-pogrebnyak, márquelo como respuesta – GetUsername
@GetUsername No quería hacerlo sin el voto de alguien: D –
Gran respuesta +1 – PiersyP