我需要确保地图内容是最终的,它是通过以下方式初始化的:
Map<K, V> map = new HashMap<K, V>(iAnotherMap);
每次对修改地图内容(如放置,删除,替换...)的方法的调用都会以错误结束。
但是我仍然可以执行其他操作:
map = new HashMap<K, V>(iAnotherMap);
有什么办法可以做到这一点?
谢谢
编辑:尝试使用Collections.unmodifiableMap方法,但是存在一个问题:
我要包装的类是:
public class IndexedHashMap<K, T> implements Map<K, Pair< Integer, T >>, Serializable
以下代码返回错误:
IndexedHashMap< K, T > mCurrent = new IndexedHashMap< K, T >();
IndexedHashMap< K, T > mConstantCurrent = Collections.unmodifiableMap(mCurrent);'
类型不匹配:无法从Map>转换为IndexedHashMap
有什么想法吗?
最佳答案
final
将使您的参考最终化,但地图对象仍可编辑。您需要使用来自Collections
的现有unmodifiableMap包装器
Map<K, V> map = Collections.unmodifiableMap(new HashMap<K, V>(iAnotherMap));
或构建自己的实施