制作一个列表并对其进行初始化以包含Enum的所有值

时间:2015-08-16 23:14:08

标签: java list enums

我有一个枚举Direction,我想创建该枚举的所有值的临时列表,然后能够删除或添加该列表的值。

public enum Direction {
    TOP, RIGHT, BOTTOM, LEFT
}

List<Direction> directions = Arrays.asList(Direction.values());

directions.remove(0); // error
directions.add(Direction.BOTTOM); // error

使用我当前的代码,当我在0处删除元素时,或者如果我添加任何元素,我会得到一个运行时异常java.lang.UnsupportedOperationException。所以我想这样我得到的列表是不可变的?我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

Arrays#asList会返回一个不支持Listadd元素的remove,因为它只包含一个数组。而是创建一个新的ArrayList并将Arrays#asList的结果作为参数传递:

List<Direction> directions = new ArrayList<>(Arrays.asList(Direction.values()));