Java8数组列表返回超类对象的列表

Java8数组列表返回超类对象的列表,java,java-8,Java,Java 8,ArrayList是否可以返回超类对象列表 例如: B类扩展了A类 我有一个B类的数组列表 如何使用Java8返回类A对象的ArrayList 例如: 我有一个名为classBList的ClassB列表。我想得到ClassA对象的列表 List <ClassA> classAList = new ArrayList <ClassA> (classBList); List classlist=newarraylist(classBList); 但我在班上的成绩仍然是B

ArrayList是否可以返回超类对象列表

例如:

B类扩展了A类

我有一个B类的数组列表

如何使用Java8返回类A对象的ArrayList

例如:

我有一个名为classBList的ClassB列表。我想得到ClassA对象的列表

List <ClassA> classAList = new ArrayList <ClassA> (classBList);
List classlist=newarraylist(classBList);
但我在班上的成绩仍然是B


请帮忙。谢谢。

如果我理解正确,您有一个运行时类型ClassB的对象列表,需要一个运行时类型ClassA的对象列表

考虑:

ClassB b = new ClassB();
ClassA a = b
这里
b
a
指的是同一个实例。
ClassB
的实例

如果我们真的想更改运行时类型,我们需要创建一个新对象。假设有一个合适的构造函数:

ClassA b = new ClassB();
ClassA a = new ClassA(a);
要将其应用到列表中,我认为:

List<ClassA> as = bs.stream()
    .map(ClassA::new)
    .toCollection(Collectors.toCollection(ArrayList::new));
List as=bs.stream()
.map(ClassA::新建)
.toCollection(收集器.toCollection(ArrayList::new));
或者,更容易理解但不那么令人印象深刻:

List<ClassA> as = new ArrayList<>() {
for (ClassB b : bs) {
    as.add(new ClassA(b);
}
List as=new ArrayList(){
对于(b类:bs){
增加(新的A类(b类);
}

但是,通常类应该是叶子(实际上是最终的)或者抽象

您已经有了一个;B对象的列表就是a对象的列表,因为所有B对象都是a对象。也许您可以编辑问题,使其更具体地说明您试图实现的目标,最好是使用代码示例。编辑。是否可能?除非
ClassA实现列表
,否则
ClassA
是正确的不能分配给
列表
。但这还不足以让我了解您要做什么;请编写一个最小的可复制示例。只要您不希望客户端在调用您正在使用的方法后向列表中添加内容,您可以将其声明为
公共列表我已使用代码编辑。请帮助。谢谢
List<ClassA> as = new ArrayList<>() {
for (ClassB b : bs) {
    as.add(new ClassA(b);
}