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