我有一个枚举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
。所以我想这样我得到的列表是不可变的?我该怎么做呢?
答案 0 :(得分:4)
Arrays#asList
会返回一个不支持List
或add
元素的remove
,因为它只包含一个数组。而是创建一个新的ArrayList
并将Arrays#asList
的结果作为参数传递:
List<Direction> directions = new ArrayList<>(Arrays.asList(Direction.values()));