Java对象:如何使私有字段映射在类中不可变?
public class Hi {
private final Map<String, String> map;
public Map<String, String> getMap() {
return map;
}
}
我有一个Hi类,我希望map是不变的。我还需要一个吸气剂。目前,另一个类可以从getter修改映射。我想返回map的副本来解决这个问题,但是map是一个接口,所以这是否意味着我必须进行getter调用:
return new HashMap<String,String>(map);
有没有其他方法可以在不强制映射为hashmap的情况下执行此操作?我希望它能和以前一样
# 1 楼答案
使用Collections API返回一个不可修改的映射。 http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#unmodifiableMap(java.util.Map)
# 2 楼答案
返回
Collections.unmodifiableMap(map)
,它提供了它所包装的Map
的不可修改视图。引用the Javadocs for that method