변경 가능한 List 멤버가 있어도 다음 클래스를 변경하지 못하게하려고합니다. 이것을 어떻게 할 수 있습니까?변경할 수있는 멤버가 있어도이 클래스를 변경하지 못하게하려면 어떻게해야합니까?
class MyImmutableClass {
private List<Integer> data;
public MyImmutableClass(List<Integer> data) {
this.data = data;
}
public List<Integer> getData() {
return data;
}
}
다음은 객체 상태를 수정하는 main()
함수의 테스트 클래스입니다.
class TestMyImmutableClass{
public static void main(String[] args) {
List<Integer> data = new ArrayList<Integer>();
data.add(2);
data.add(5);
MyImmutableClass obj = new MyImmutableClass(data);
obj.getData().add(3);
System.out.println("Data is; " + obj.getData());
}
}
O/P : 대신에 대한 참조를 반환 Data is; [2, 5, 3]
당신에
테스트 케이스를 완전히 이해하지 못했습니다. 클래스가 불변 인 경우 3을 추가 할 수 없습니다. – user949300
또한 멤버 변수에'final'을 추가하십시오. –
당신은 @MadProgrammer로부터 훌륭한 답변을 얻었지만, 앞으로 도움이 될 것입니다 : http://mutabilitydetector.org. 클래스 테스트가 불변인지 확인하기 위해 단위 테스트를 작성하고이를 수정하는 방법을 안내합니다. 면책 조항 : 나는 그것을 썼다 : – Grundlefleck