我需要确保地图内容是最终的,它是通过以下方式初始化的:

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));


或构建自己的实施

07-27 13:45