我有一个ArrayList
包含从抽象类派生的对象,有没有办法返回抽象类类型的数组列表,然后使用多态,能够引用原始对象?
我能看到这样做的唯一方法是创建一个抽象类类型的ArrayList
,然后将原始ArrayList
中的元素复制到此,但我不想要副本。
答案 0 :(得分:2)
假设您的具体课程为Integer
,您的抽象课程为Number
。
如果您愿意收到List<Number>
而不是ArrayList<Number>
的结果广告(无论如何都是一种好的做法),您可以执行以下操作:
List<Integer> listOfConcrete = new ArrayList<>(); // your actual list
List<Number> listOfAbstract = listOfConcrete.stream()
.map(n -> (Number) n)
.collect(Collectors.toList());
您需要在map()
调用中进行显式转换,以便正确执行转换。