개인 필드 목록을 반환하는 getter 클래스가 있습니다.getter가 반환 한 컬렉션을 변경할 수없는 이유는 무엇입니까?
Class MyClass {
private List<String> myList;
public List<String> getMyList(){
return myList;
}
}
그러나 getter 메서드 호출자는 해당 목록에서 요소를 추가하거나 제거 할 수 없습니다.
MyClass instance = new MyClass();
List<String> hisList = instance.getMyList();
hisList.add("new element");
UnsupportedOperationException이 발생했습니다.
getter가 해당 목록에 대한 참조를 반환하지만 그 목록이 호출자 측에서 읽기 전용 인 이유는 무엇입니까? 참고 getter에서 Collections.unmodifiableList()를 반환하지 않았습니다.
UPDATE :이
미안 해요, 난 Arrays.asList에 의해 수정 크기의 목록을 만든 이유)
모두가 올바르게 보입니다. 코드가 누락 되었습니까? 나는 어떤 목록도 초기화되지 않았다. – Sam
귀하의 질문에 답변하는 데 필요한 코드가 없습니다. myList가 인스턴스화 된 방법을 표시하지 않았습니다. 우리가 제공 한 코드를 실행하면 NullPointerException이 발생합니다. – rfeak
초기화 코드 및 스택 추적의 첫 번째 몇 줄. –