import java.util.*;
final class MyImmutableClass {
private final HashMap h = null;
public MyImmutableClass(HashMap h) {
this.h = h;
}
public HashMap getH() {
return h;
}
}
答案 0 :(得分:0)
您可以在您的课程中公开无法修改的地图:
import java.util.*;
final class MyImmutableClass {
private final HashMap h = null;
private Map<String, String> noModMap;
public MyImmutableClass(HashMap h) {
this.h = h;
noModMap = Collections.unmodifiableMap(h);
}
public Map getH() {
return noModMap;
}
}
getH()
返回的映射基本上是对在类构造期间传递的基础映射的只读视图。来自JavaDoc for Collections#unmodifiableMap
:
对返回的地图的查询操作会“读取”到指定的地图,并尝试直接或通过其集合视图修改返回的地图,从而导致UnsupportedOperationException。
因此,任何试图更改地图视图的人都会抛出异常,并且底层的初始地图无法从外部更改。