Рассмотрим следующий фрагмент кода:Лучшая практика для Возвратившись Ссылки на объект
class MyClass{
private List myList;
//...
public List getList(){
return myList;
}
}
Как Java передает ссылки на объект по значению, я понимаю, что любой объект вызова getList()
получит ссылку на myList
, позволяя изменять myList
несмотря это private
. Это верно?
И, если это правильно, я должен использовать
return new LinkedList(myList);
, чтобы создать копию и передать обратно ссылку на копию, а не оригинал, в целях предотвращения несанкционированного доступа к списку ссылочного по myList
?
технически, никакой внешний клиент не сможет изменить значение поля myList в вашем классе. Он всегда будет дескриптором/ссылкой на List, ссылаясь на список, в который его установил некоторый код внутри MyClass.Внешний клиент сможет изменить содержимое этого списка. –
Да, это то, что я имел в виду, но получил немного неряшливо с моим объяснением. Я отредактирую его – chrisbunney
+1 Miro A для правильного уточнения. И да, ваше решение, создав копию списка, является правильным (для чего вы хотите достичь). – xagyg