3

Troveコレクションの一部に変更不可能なラッパーを配置したいと思います。Troveのドキュメントを確認しましたが、簡単な方法が見つからないようです(明らかなことを見落としている可能性があります)。

したがって、現時点では、このような変更不可能なラッパーが必要になるたびに、Troveコレクション(TIntLongHashMapなど)を拡張し、すべての読み取り専用呼び出しをTroveラップされたサブジェクトに委任し、コレクションを変更しようとするすべてのメソッドでUnsupportedOperationExceptionをスローします。 。

もっと簡単な方法はありますか?

注:この質問はデフォルトのJavaコレクションに関するものではなく、この場合、デフォルトのJavaコレクションにも他のJavaコレクションにもまったく関心がありません。この質問は特にTroveに関するものです。

4

2 に答える 2

3

受け入れられた答えはその時点で正しかったが、同じことをしようとしている人のために、Trove3は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 に答える