java - java中基于父类(super class)和子类对泛型类型的多重限制

标签 java inheritance interface generics subclass

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

接口(interface)中的列表项也实现了相同的接口(interface)。

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

    ...
}

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

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

请告诉我是否可以重新措辞以帮助解释它。

最佳答案

这个有用吗?

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

关于java - java中基于父类(super class)和子类对泛型类型的多重限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085557/

相关文章:

interface - 如何避免需要指针接收器的接口(interface)方法实现?

java - 安全配置 http 数据库类型=Forbidden,状态=403

java - 数组越界异常

java - 如何使自动完成接受多个值?

java - 允许具有不同父类的类在没有多重继承的情况下扩展类

java - 接口(interface)和抽象类共享相同的方法

c# - 不实现接口(interface)成员问题

java - 如何在只有 XSD 而没有 WSDL 的情况下调用 Java 中的 Web 服务?

c# - 使用派生类型和同名 C# 覆盖属性

c# - 从基类对象列表中识别派生类型