3

我想在一些 Trove 集合周围放置不可修改的包装器:我检查了 Trove 文档,但似乎找不到简单的方法(我可能忽略了一些明显的东西)。

因此,到目前为止,每次我需要这样一个不可修改的包装器时,我都会扩展 Trove 集合(例如TIntLongHashMap)并将所有只读调用委托给 Trove 包装的主题,并在每个尝试修改集合的方法中抛出UnsupportedOperationException .

有没有更简单的方法?

注意:这个问题与默认 Java 集合无关,在这种情况下,我对默认 Java 集合和其他 Java 集合都不感兴趣:这个问题专门针对 Trove。

4

2 回答 2

3

当时接受的答案是正确的,但对于任何想要这样做的人来说,Trove 3 现在通过TCollections课程支持这一点。

例如

TIntLongMap myMap = new TIntLongHashMap();
TIntLongMap myUnmodifiableMap = TCollections.unmodifiableMap(myMap);

myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException
于 2013-08-27T09:31:46.453 回答
1

Trove API 无法做到这一点,只能使用装饰器。

于 2010-01-27T14:05:39.610 回答