[java] Java의 모든 열거 형 값으로 목록 채우기

내가 열거의 모든 가능한 값 목록을 채우기 위해 싶습니다
나는 최근 사랑에 빠진 이후로 EnumSet나는 활용,allOf()

EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
    list.add( s);
}
return list;

동일한 결과를 얻는 더 좋은 방법이 있습니까 (난독 화되지 않은 하나의 라이너에서와 같이)?



답변

EnumSet이 더 적절하기 때문에 처음에는 List를 사용하지 않지만 할 수 있습니다.

List<Something> somethingList = Arrays.asList(Something.values());

또는

List<Something> somethingList =
                 new ArrayList<Something>(EnumSet.allOf(Something.class));


답변

Class.getEnumConstants()

List<SOME_ENUM> enumList = Arrays.asList(SOME_ENUM.class.getEnumConstants());


답변

생성자 ArrayList가 있습니다.

ArrayList(Collection<? extends E> c)

이제 EnumSet확장 AbstractCollection하여 할 수 있습니다.

ArrayList<Something> all = new ArrayList<Something>(enumSet)


답변

시험

enum E {
    E1, E2, E3
}

public static void main(String[] args) throws Exception {
    List<E> list = Arrays.asList(E.values());
    System.out.println(list);
}


답변

List<Something> result = new ArrayList<Something>(all);

EnumSetSet인터페이스를 구현하므로 Java 컬렉션입니다 .

public interface Set<E> extends Collection<E>

따라서 컬렉션으로 할 수있는 모든 작업은 EnumSet.


답변

이것은 좀 더 읽기 쉽습니다.

Object[] allValues = all.getDeclaringClass().getEnumConstants();


답변

이 시도:

... = new ArrayList<Something>(EnumSet.allOf(Something.class));

ArrayList와 생성자가 있습니다 Collection<? extends E>. 그러나이 방법은 정말로 EnumSet.

모든 열거 형은 메서드에 액세스 할 수 있습니다 values(). 모든 열거 형 값의 배열을 반환합니다.

... = Arrays.asList(Something.values());