apache common의 UnmodifiableMap은 Immutable과 비슷하지만 기존 맵을 변경하지 못하도록 하지만 실제 객체의 인스턴스를 래핑하는 객체정도로 보면 좋을 것 같다.
다음은 예시이다. hashCode를 보면 동일한 객체인지 알 수 있다.
import org.apache.commons.collections.map.UnmodifiableMap;
Map<String, Object> map1 = Maps.newHashMap();
map1.put("key", "value");
MapUtils.debugPrint(System.out, "map1", map1);
System.out.println(map1.hashCode());
System.out.println();
Map<String, Object> map2 = UnmodifiableMap.decorate(map1);
MapUtils.debugPrint(System.out, "map2", map2);
System.out.println(map2.hashCode());
결과
map1 =
{
key = value java.lang.String
} java.util.HashMap
112004910
map2 =
{
key = value java.lang.String
} org.apache.commons.collections.map.UnmodifiableMap
112004910
UnmodifiableMap 코드 내부에서는 아래와 같이 변경하려 하면 에러를 발생시킨다.
public void clear() {
throw new UnsupportedOperationException();
}
public Object put(Object key, Object value) {
throw new UnsupportedOperationException();
}
public void putAll(Map mapToCopy) {
throw new UnsupportedOperationException();
}
public Object remove(Object key) {
throw new UnsupportedOperationException();
}
'general java' 카테고리의 다른 글
[maven] maven에서 main 메소드 호출시 매개변수 전달하는 방법 (0) | 2017.08.24 |
---|---|
apache storm 1.0.1 설치 및 테스트 (0) | 2017.08.22 |
multipart/form-data; boundary 예제 - curl. java apache http 라이브러리 (0) | 2017.06.09 |
이모티콘 저장시 mysql 관련 히스토리 (0) | 2017.06.05 |
mysql driver 버전 5에서 버전 6로 변경시 이슈 (0) | 2017.04.11 |