95

列挙型のすべての可能な値でリストを埋めたいと思います
最近私は恋に落ちたので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;

同じ結果を達成するためのより良い方法(難読化されていないワンライナーなど) はありますか?

4

9 に答える 9

192

EnumSetの方が適切であるため、最初はリストを使用しませんが、行うことができます

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

また

List<Something> somethingList =
                 new ArrayList<Something>(EnumSet.allOf(Something.class));
于 2013-04-22T14:05:01.800 に答える
14

Class.getEnumConstants()

List<SOME_ENUM> enumList = Arrays.asList(SOME_ENUM.class.getEnumConstants());
于 2014-12-25T09:08:23.227 に答える
10

コンストラクタがArrayListあります。

ArrayList(Collection<? extends E> c) 

今、あなたができるようにEnumSet拡張しますAbstractCollection

ArrayList<Something> all = new ArrayList<Something>(enumSet)
于 2013-04-22T14:04:54.670 に答える
0

以下も使用できます。

Collections.singletonList(Something.values())
于 2016-05-17T14:38:31.023 に答える
0

これはもう少し読みやすいです:

Object[] allValues = all.getDeclaringClass().getEnumConstants();
于 2013-04-22T14:04:13.183 に答える
-3
private ComboBox gender;
private enum Selgender{Male,Famle};
ObservableList<Object> observableList  =FXCollections.observableArrayList(Selgender.values());
于 2018-09-02T11:40:23.467 に答える