Wyobraź sobie, że mam tę klasę:
public class Test
{
private String[] arr = new String[]{"1","2"};
public String[] getArr()
{
return arr;
}
}
Teraz mam inną klasę, która używa powyższej klasy:
Test test = new Test();
test.getArr()[0] ="some value!"; //!!!
Oto więc problem: uzyskałem dostęp do prywatnego pola klasy z zewnątrz! Jak mogę temu zapobiec? Mam na myśli, jak mogę uczynić tę tablicę niezmienną? Czy to oznacza, że każdą metodą pobierającą możesz wypracować sobie drogę do uzyskania dostępu do pola prywatnego? (Nie chcę żadnych bibliotek, takich jak Guava. Muszę tylko wiedzieć, jak to zrobić).
final
robi uniemożliwić modyfikację tej dziedzinie . Jednak zapobieżenie modyfikacji tego, do któregoObject
odwołuje się pole, jest bardziej skomplikowane.