Существует несколько встроенных классов, реализующих этот интерфейс, включая ArrayList и TreeSet< /code>.
Интерфейс определяет некоторые методы, например addLast, среди многих других, хотя и этого будет достаточно.
Если я использую ArrayList введите, код скомпилируется и будет работать корректно:
Код: Выделить всё
var myArray = new ArrayList(List.of("a", "b"));
myArray.addLast("c");
Код: Выделить всё
var myTree = new TreeSet(List.of("a", "b"));
myTree.addLast("c");
Это неудобно, потому что если у меня есть метод, который получает тип класса SequencedCollection в качестве параметра, мне нужно еще раз угадать в теле метода (т. е. экземпляр), является ли фактический объект, переданный в качестве параметра, тем самым я могу работать with.
Это еще один способ сказать, что некоторые дочерние элементы SequencedCollection нельзя использовать вместо родительского класса без неожиданного поведения...... что, в свою очередь, является еще одним способом сказать, что интерфейс SequencedCollection нарушает принцип Подстановки Лискова (L в SOLID).
Есть ли обоснованность этого наблюдения?
Подробнее здесь: https://stackoverflow.com/questions/793 ... principles
Мобильная версия