2016-04-09 2 views
-3

Этот код не работает;Невозможно добавить массив перечислений в коллекцию

ArrayList<BlockFace> cardinalDirections = new ArrayList<>(); 
    cardinalDirections.addAll(new BlockFace[] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST}); 

И это не так;

ArrayList<BlockFace> cardinalDirections = Arrays.asList(new 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); 

Почему не работают два лучших примера?

+0

'Список cardinalDirections = Arrays.asList (новый BlockFace [] {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST});' вместо ' ArrayList ' – Tunaki

+0

' addAll' не имеет перегрузки, которая принимает массив. – Savior

+2

И 'Arrays.asList' имеет тип возврата' List'. – Savior

ответ

0

Ваш подход не работает, потому что ArrayList.addAll принимает Сбор не массива.

Преобразование перечисление в ArrayList

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

Почему в этом что-то не так? –

Смежные вопросы