У меня есть настройки структуры списка как такового:Последовательное наследование списков
List<List<Value>> l = new RowList();
, который дает ошибку "Type mismatch: Cannot convert from RowList to List<List<Value>>"
. Реализация осуществляется следующим образом:
public class RowList extends ArrayList<ValueList>
public class ValueList extends ArrayList<Value>
Значение - это объект в моей кодовой базе. Почему это не работает? Когда у меня есть это вместо того, все работает отлично:
public class RowList extends ArrayList<List<Value>>
Для задания колледжа я работаю, код, что наш преподаватель написал произведение, вызывая метод, который возвращает List<List<Value>>
внутри мой код, а затем добавить List<Value>
к этот список. Поскольку программа предназначена для реализации базы данных, существует ряд требований, таких как ключевые значения, которые не встречаются более одного раза и т. Д. Чтобы проверить, что этого не происходит, мне нужно иметь класс ValueList или что-то подобное поэтому я могу расширить метод add()
, чтобы проверить эти требования.
Теперь кажется, что это не правильный способ сделать что-то, но у меня нет выбора в этом вопросе, так как нам не разрешается изменять код, который это делает. Я считаю, что идея состоит в том, что это заставляет нас думать о дженериках.
Замечание по терминологии - «множественное наследование» обычно зарезервировано для случая, когда один класс наследуется от двух или более баз. В Java это поддерживается только в том случае, если все, кроме одного из «баз», являются интерфейсами, поэтому, как правило, считается, что Java не поддерживает множественное наследование, тогда как C++ делает (и Java специально решил не копировать это). Наличие цепей наследования обычно не называется «множественным наследованием», поэтому называть его «множественное наследование» немного запутанно. – Steve314
@ Steve314 Я изменил его на «Последовательное наследование»: надеюсь, это менее двусмысленно. – user2282497