У меня есть общий список класса, который реализует определенный интерфейс.
Элементы списка в интерфейсе также реализуют тот же интерфейс.
public abstract class List<T extends SomeInterface> implements SomeInterface
{
protected LinkedList<T> m_list;
...
}
Итак, теперь я хочу сделать подкласс этого списка, который остается общим, но ограничивает элементы объектами, которые реализуют интерфейс SearchListItem:
public interface SearchListItem
{
public String getName();
}
Вот что у меня есть для класса SearchList:
public abstract class SearchList<T extends SearchListItem> extends List<T>
{
public T get(String name)
{
...
}
...
}
Но, конечно, это жалуется на определение класса:
Bound mismatch: The type T is not a valid substitute for the bounded parameter <T extends SomeInterface> of the type List<T>
Так что же мне нужно добавить в объявление класса, чтобы сказать: «SearchList расширяет класс List и имеет дополнительные ограничения на тип общего класса, который включает в себя как SomeInterface (в базовом классе), так и SearchListItem»?
Пожалуйста, скажите мне, могу ли я перефразировать это, чтобы помочь объяснить это.