Как вернуть неизменяемое представление коллекции Java Trove?

Я хотел бы поместить неизменяемые обертки вокруг некоторых коллекций Trove: я проверил документацию Trove и, похоже, не могу найти простой способ сделать это (возможно, я упустил что-то очевидное).

Так что теперь каждый раз, когда мне нужна такая немодифицируемая оболочка, я расширяю коллекцию Trove (например, TIntLongHashMap) и делегирую все вызовы только для чтения для обернутого субъекта Trove и выбрасываю исключение UnsupportedOperationException в каждом методе, который пытается изменить коллекцию,

Есть ли более простой способ?

Примечание: этот вопрос не о коллекциях Java по умолчанию, и в этом случае меня совсем не интересуют ни коллекции Java по умолчанию, ни другие коллекции Java: этот вопрос конкретно касается Trove.

2 ответа

Решение

Это невозможно сделать с помощью Trove API, только с помощью декораторов.

Принятый ответ был верным в то время, но для тех, кто хочет сделать то же самое, Trove 3 теперь поддерживает это через TCollections учебный класс.

Например

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

myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException
Другие вопросы по тегам