방어적 복사에서 clone은 안전한가
주제 Effective Java 스터디에서 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라는 주제에 관해 얘기하던 중 다음과 같은 질문이 나오게 되었습니다. private static final Thing[] PRIVATE_VALUES = { ... }; public static final Thing[] values() { return PRIVATE_VALUES.clone(); } 원본 배열의 불변성을 지키기 위해 방어적 복사를 사용하여 복사 배열을 반환하는 메서드를 생성하였는데 배열 원소 내부의 값을 조작하게 되면 원본 배열의 불변성이 깨지지 않을까요? clone 메서드를 사용하게 되면 새로운 메모리 공간에 값을 복사하게 되지만, 원소가 기본 타입이 아닌 참조 타입이기에 해당 주소값도 동일하게 복..
Java
2022. 7. 12. 15:04