Страницы

Поиск по вопросам

среда, 13 марта 2019 г.

Collections.unmodifiable* как определить?

Известно, что есть класс java.util.Collections в котором есть методы вида unmodifiable* возвращающие неизменяемые коллекции. Теперь вопрос, как определить, что коллекция является неизменяемой?


Ответ

Какое-либо универсальное хорошее решение Вы вряд ли найдете.
На мой взгляд, самое некостыльное из костылей – .getClass().isInstance(...)
List list = new ArrayList<>(); List unmodifiableList = Collections.unmodifiableList(list); boolean isUnmodifiable = Collections.unmodifiableList(list).getClass().isInstance(unmodifiableList);
Еще варианты:
Ловить UnsupportedOperationException при добавлении элемента. Но тогда, в случае изменяемой коллекции, после теста элемент нужно удалить. .getClass().getSimpleName().equals(...)

Комментариев нет:

Отправить комментарий