通常我是用的复制的方法有
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中