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

Jav*_*oob 5 java generics

考虑这种情况

public abstract class A{

}

public interface B{

}
Run Code Online (Sandbox Code Playgroud)

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

List<? extends A implements B> list = new List();
Run Code Online (Sandbox Code Playgroud)

谢谢

Val*_*ano 0

您还可以使用“&”运算符并将未知类声明为类型参数,如下所示。与声明 a 相比,这样做的优点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;
    }
}
Run Code Online (Sandbox Code Playgroud)