Java Can';t将枚举数组添加到集合

Java Can';t将枚举数组添加到集合,java,arrays,collections,enums,Java,Arrays,Collections,Enums,这个代码不起作用 ArrayList<BlockFace> cardinalDirections = new ArrayList<>(); cardinalDirections.addAll(new BlockFace[] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST}); ArrayList cardinalDirections=new ArrayList(); ca

这个代码不起作用

    ArrayList<BlockFace> cardinalDirections = new ArrayList<>();
    cardinalDirections.addAll(new BlockFace[] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST});
ArrayList cardinalDirections=new ArrayList();
cardinalDirections.addAll(新块面[]{BlockFace.NORTH,BlockFace.SOUTH,BlockFace.EAST,BlockFace.WEST});
这也不是

ArrayList<BlockFace> cardinalDirections = Arrays.asList(new BlockFace[] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST});
ArrayList cardinalDirections=Arrays.asList(新BlockFace[]{BlockFace.NORTH,BlockFace.SOUTH,BlockFace.EAST,BlockFace.WEST});
只有在每次手动添加一个元素,或者遍历数组时,它才起作用

    ArrayList<BlockFace> cardinalDirections = new ArrayList<>();
    for (BlockFace face : new BlockFace[] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST})
        cardinalDirections.add(face);
ArrayList cardinalDirections=new ArrayList();
用于(块面:新块面[]{BlockFace.NORTH,BlockFace.SOUTH,BlockFace.EAST,BlockFace.WEST})
添加(面);

为什么前两个示例不起作用?

您的方法不起作用,因为
ArrayList.addAll
采用集合而不是数组

将枚举转换为ArrayList

List<BlockFace> list = Arrays.asList(BlockFace.values());
List List=Arrays.asList(BlockFace.values());

List cardinalDirections=Arrays.asList(新BlockFace[]{BlockFace.NORTH、BlockFace.SOUTH、BlockFace.EAST、BlockFace.WEST})
而不是
ArrayList
addAll
没有接受数组的重载。并且
数组。asList
的返回类型为
List
。不要使用List或ArrayList来保存枚举值。使用在您的情况下,
EnumSet.allOf(BlockFace.class)
就足够了。谢谢。BlockFace实际上比上面列出的值多得多,我只打算使用上面列出的值。