2016-04-09 20 views
-3

このコードは機能しません。コレクションに列挙型の配列を追加できません。

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

これはどちらも行いません。

これは、各要素を手動で1つずつ追加するか、配列全体を反復する場合にのみ機能します。

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

なぜ上位2つの例は機能しませんか。

+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

なぜそれに間違いがありますか? –

関連する問題