Java 泛型创建扩展类 A 并实现接口(interface) B 的对象列表

标签 java generics

考虑这个场景

public abstract class A{

}

public interface B{

}

我将如何创建一个扩展 A 并实现 B 的对象列表?

List<? extends A implements B> list = new List();

谢谢

最佳答案

您还可以使用“&”运算符并将未知类声明为类型参数,如下所示。与声明 class XXX extends B implement A 相比,此方法的优势在于您的代码将适用于满足约束的任何此类类,而不仅仅是 XXX 后代。

import java.util.*;

interface A {};

class B {};

class Test {

    public <T extends B & A> List<T> asList(Collection<T> elements) {
        List<T> result = new ArrayList<>(elements.size());
        for (T element : elements) result.add(element);
        return result;
    }
}

关于Java 泛型创建扩展类 A 并实现接口(interface) B 的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463923/

相关文章:

java - 重写 "Java Effective"示例中泛型方法的绑定(bind)不匹配

java - 如何在单元测试中模拟 JPA 存储库的查找方法

java - ImageIO write() 是阻塞方法吗?

java - 如何填充包信息页面(package-info.java)上的类摘要字段?

c# - 如何在没有自己的构造函数的情况下在基类型的函数中调用泛型类型的构造函数?

java - <? 之间的区别 super T> 和 <?在 Java 中扩展 T>

Java 泛型 : Example if types are not erased at compilation

java - 限制映射键和值类型 - 更复杂

java - 错误 : cannot find symbol method

java - 异常与错误的区别