Me gustaría llenar una lista con todos los valores posibles de una enumeración.
Desde que me enamoré recientemente EnumSet, aprovechéallOf()
EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
list.add( s);
}
return list;
¿Existe una mejor manera (como en un trazador de líneas no ofuscado) para lograr el mismo resultado?

Respuestas:
No usaría una Lista en los primeros lugares ya que un EnumSet es más apropiado, pero puede hacerlo
o
List<Something> somethingList = new ArrayList<Something>(EnumSet.allOf(Something.class));fuente
Natural Orderel Enum, es por eso que unList<Enum>es útil frente a unEnumSet.EnumSetno tiene unget()método (acceso aleatorio fácil) mientras queListsí. Esto puede ser importante para lo que sea que List / EnumSet esté destinado a ser utilizadoClass.getEnumConstants()fuente
Hay un constructor para el
ArrayListcual esAhora, se
EnumSetextiendeAbstractCollectionpara que puedas hacerArrayList<Something> all = new ArrayList<Something>(enumSet)fuente
tratar
enum E { E1, E2, E3 } public static void main(String[] args) throws Exception { List<E> list = Arrays.asList(E.values()); System.out.println(list); }fuente
List<Something> result = new ArrayList<Something>(all);EnumSetes una colección de Java, ya que implementa laSetinterfaz:public interface Set<E> extends Collection<E>Entonces, cualquier cosa que pueda hacer con una colección, puede hacerlo con un
EnumSet.fuente
Esto es un poco más legible:
fuente
Something.class.getEnumConstants()correcto?Something.values();Prueba esto:
... = new ArrayList<Something>(EnumSet.allOf(Something.class));como
ArrayListtiene un constructor conCollection<? extends E>. Pero use este método solo si realmente desea usarEnumSet.Todas las enumeraciones tienen acceso al método
values(). Devuelve una matriz de todos los valores de enumeración:fuente
También puede utilizar:
fuente
private ComboBox gender; private enum Selgender{Male,Famle}; ObservableList<Object> observableList =FXCollections.observableArrayList(Selgender.values());fuente