У меня есть интерфейс, похожий на коллекцию, который содержит большинство методов интерфейса Collection
, но есть проблема, связанная с методами add
и contains
, которые я просто хочу унаследовать от Collection
.
Элементы типа T
в Collection
реализуют метод copy
и метод установки, который иногда требуется следующим образом:
- Измените элемент перед тем, как вставить его через предоставленный сеттер
- Создайте копию элемента, измените один или оба элемента с помощью предоставленного установщика и только затем вставьте их
Можно визуализировать это, думая о коллекции, которая принимает строковые аргументы, но если добавлена конкретная строка foo
, добавляется усеченная версия fo
или fo
плюс еще одна строка bar
.
// Examples of the add() method internals
collection.add("foo"); // internally add("fo");
collection.add("foo"); // internally add("fo"); add("bar");
Проблема в том, что иногда вставляется более одного элемента, что само по себе хорошо для контракта метода из add
, но изменение элемента перед вставкой несколько грязно. Если используется метод copy
и элемент вставлен, он больше не будет contain
оригинальным элементом.
Вопрос: Правильно ли будет расширить Collection
, тем не менее, или большинство методов сбора данных переопределяется здесь?