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

时间:2010-11-03 09:17:38

标签: java inheritance interface generics subclass

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

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

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的泛型类类型有其他限制”?

请告诉我是否可以改写此内容以帮助解释它。

1 个答案:

答案 0 :(得分:6)

这有用吗?

public abstract class SearchList<T extends SomeInterface & SearchListItem> extends List<T>