Java ArrayList,返回抽象类ArrayList的访问方法

Java ArrayList,返回抽象类ArrayList的访问方法,java,class,arraylist,abstract,Java,Class,Arraylist,Abstract,我有一个ArrayList包含从抽象类派生的对象,是否有方法返回抽象类类型的数组列表,然后使用多态性,能够引用原始对象 我能看到的唯一方法是创建抽象类类型的ArrayList,然后将原始ArrayList中的元素复制到此中,但我不需要复制。假设您的具体类是Integer,而您的抽象类是Number 如果您希望以列表而不是数组列表的形式接收结果强制转换(无论如何,这是一个很好的做法),您可以执行以下操作: List<Integer> listOfConcrete = new Array

我有一个
ArrayList
包含从抽象类派生的对象,是否有方法返回抽象类类型的数组列表,然后使用多态性,能够引用原始对象


我能看到的唯一方法是创建抽象类类型的
ArrayList
,然后将原始
ArrayList
中的元素复制到此中,但我不需要复制。

假设您的具体类是
Integer
,而您的抽象类是
Number

如果您希望以
列表
而不是
数组列表
的形式接收结果强制转换(无论如何,这是一个很好的做法),您可以执行以下操作:

List<Integer> listOfConcrete = new ArrayList<>(); // your actual list
List<Number> listOfAbstract = listOfConcrete.stream()
  .map(n -> (Number) n)
  .collect(Collectors.toList());
List-listOfConcrete=new-ArrayList();//你的实际名单
List listOfAbstract=listOfConcrete.stream()
.地图(n->(编号)n)
.collect(Collectors.toList());

您需要在
map()
调用中执行显式强制转换,以便正确执行强制转换。

发布您的代码,并准确地告诉我们您希望执行的操作,这是您现有的操作所无法做到的。哇,太快了,我使用了您的示例,效果非常好,我的方法如下所示:public ArrayList alobjGetPollSchedule(){retrurn(ArrayList)malobjPollSchedule.stream().map(n->(clsPoll)n).collect(collector.toList());}不,您不需要显式强制转换
map
。实际上,您根本不需要
map
步骤。
listOfAbstract=listofccrete.stream().collector(collector.toList());
就足够了。但是您甚至不需要Java 8来复制列表:
列表listOfAbstract=new ArrayList(listOfConcrete);
也可以工作。如果目标是将列表作为数字使用,那么可能只需要
列表