Nếu tôi viếtCollections.unmodifiableList và bản sao phòng thủ
List<Integer> a1 = Arrays.asList(1, 2, 3);
List<Integer> a2 = Collections.unmodifiableList(a1);
a2
là chỉ đọc nhưng nếu tôi viết
a1.set(0,10);
sau đó a2
cũng được sửa đổi.
Nếu trong API nói:
Trả một cái nhìn unmodifiable của bộ sưu tập xác định. Phương pháp này cho phép các mô-đun cung cấp cho người dùng quyền truy cập "chỉ đọc" vào bộ sưu tập nội bộ .
thì, tại sao nếu tôi sửa đổi bộ sưu tập gốc thì bộ sưu tập sao chép đích được sửa đổi?
Có lẽ tôi đã hiểu sai ý nghĩa và nếu có cách nào để viết bản sao phòng thủ của bộ sưu tập đó?
Nếu bạn muốn có một phiên bản unmodifiable của a1 sau đó bạn có thể sao chép a1 và làm cho rằng một danh sách unmodifiable. Sau đó, cập nhật a1 sẽ không ảnh hưởng a2. –