基于java中的超类和子类的泛型类型的多个限制

Bra*_*rad 4 java generics inheritance interface subclass

我有一个实现特定接口的通用列表类.

界面中的列表项也实现了相同的界面.

public abstract class List<T extends SomeInterface> implements SomeInterface
{
    protected LinkedList<T> m_list;

    ...
}
Run Code Online (Sandbox Code Playgroud)

所以现在我想使这个列表的子类保持通用,但将项目限制为实现SearchListItem接口的对象:

public interface SearchListItem
{
    public String getName();
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止为SearchList类所拥有的:

public abstract class SearchList<T extends SearchListItem> extends List<T>
{
    public T get(String name)
    {
        ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

但当然这引起了对班级定义的抱怨:

Bound mismatch: The type T is not a valid substitute for the bounded parameter <T extends SomeInterface> of the type List<T>
Run Code Online (Sandbox Code Playgroud)

那么我需要在类声明中说"SearchList扩展List类并对包含SomeInterface(在基类中)和SearchListItem的泛型类类型有其他限制"?

请告诉我,如果我可以改写这个来帮助解释它.

Lan*_*dei 6

这有用吗?

public abstract class SearchList<T extends SomeInterface & SearchListItem> extends List<T>
Run Code Online (Sandbox Code Playgroud)