Недавно я читал Java Concurrency in Practice
и впервые познакомился с методом Collections.unmodifiableMap(...)
. Метод создает доступную только для чтения оболочку вокруг существующего Map
, и любые попытки изменить возвращенный Map
приведут (согласно Javadocs
) к выдаче UnsupportedOperationException
. Подобные методы существуют и для других классов коллекций.
Это сильно меня обеспокоило, поскольку unmodifiableMap()
по-прежнему возвращает Map
, но не поддерживает все соответствующие методы. Тот факт, что он также генерирует исключения для операций записи, означает, что он не может заменить «правильный» Map
в большинстве приложений.
Я студент и еще не уверен в своей способности распознавать дизайн fl aws , но разве это не нарушение принципов Interface segregation
и Liskov substitution
соответственно?