通常我是用的復制的方法有
1.==
2.
List<ChessPiece> l = chess.getPieces(); List<ChessPiece> list = new ArrayList<>(l);
3.
List<ChessPiece> l = chess.getPieces(); List<ChessPiece> list = new ArrayList<>(); list.addAll(l);
4.使用循環進行復制
方法1,2,3均為淺層復制,當修改原list時,新list也會改變。並不達到產生一個新list的效果。
因此若想進行防御式復制,只能使用循環復制,而且需要注意,如果你的list內的類型也是可變類的話,當你修改原list的對應位置的內容時,新list的對應內容也會被修改。
要保證不進行修改,對內容也需要進行復制,然后再將其存入新list中