Hãy tưởng tượng rằng tôi có lớp học này:
public class Test
{
private String[] arr = new String[]{"1","2"};
public String[] getArr()
{
return arr;
}
}
Bây giờ, tôi có một lớp khác sử dụng lớp trên:
Test test = new Test();
test.getArr()[0] ="some value!"; //!!!
Vì vậy, đây là vấn đề: Tôi đã truy cập vào một trường riêng của một lớp từ bên ngoài! Làm thế nào tôi có thể ngăn chặn điều này? Tôi có nghĩa là làm thế nào tôi có thể làm cho mảng này bất biến? Điều này có nghĩa là với mọi phương thức getter, bạn có thể làm việc theo cách của mình để truy cập vào trường riêng? (Tôi không muốn bất kỳ thư viện nào như Guava. Tôi chỉ cần biết đúng cách để làm điều này).
final
không ngăn chặn sự thay đổi của lĩnh vực này . Tuy nhiên, việc ngăn chặn sửa đổiObject
được đề cập bởi một lĩnh vực phức tạp hơn.