我想在一些Trove系列中放置不可修改的包装器:我已经检查了Trove文档,我似乎找不到一个简单的方法(我可能忽略了一些明显的东西)。
到目前为止,每当我需要这样一个不可修改的包装器时,我会扩展Trove集合(例如 TIntLongHashMap )并将所有只读调用委托给Trove包装主题并抛出一个尝试修改集合的每个方法中都有 UnsupportedOperationException 。
有更简单的方法吗?
注意:这个问题不是关于默认的Java集合,在这种情况下,我对默认Java集合和其他Java集合都不感兴趣:这个问题具体是关于Trove。
答案 0 :(得分:3)
当时接受的答案是正确的,但对于任何想要这样做的人来说,Trove 3现在通过TCollections
类支持这一点。
E.g。
TIntLongMap myMap = new TIntLongHashMap();
TIntLongMap myUnmodifiableMap = TCollections.unmodifiableMap(myMap);
myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException
答案 1 :(得分:1)
使用Trove API无法实现此功能,只能使用装饰器。