网络上看到的解释
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)返回指定映射的不可修改视图。此方法允许模块为用户提供对内部映射的“只读”访问。在返回的映射上执行的查询操作将“读完”指定的映射。试图修改返回的映射(不管是直接修改还是通过其 collection 视图进行修改)将导致抛出 UnsupportedOperationException。
如果指定映射是可序列化的,则返回的映射也将是可序列化的。
参数:
m - 将为其返回一个不可修改视图的映射。
返回:
指定映射的不可修改视图。
// 实现原是是包装了下map 不支持改变大小的操作
// 仅仅返回的Map不能put remove 操作,
// 但可以对里的对象进行操作
使用例子
protected Map<String,String> parseArgs(String[] args) {
if (args == null || args.length % 2 != 0) {
throw new IllegalStateException("Cannot convert args!");
}
Map<String,String> parsedArgs = new HashMap<String,String>();
for (int n = 0; n < args.length; n+=2) {
parsedArgs.put(args[n], args[n+1]);
}
return Collections.unmodifiableMap(parsedArgs);
}
参考 : http://www.iteye.com/problems/85843