我有一个包含从抽象类派生的对象的ArrayList
,有没有办法返回抽象类类型的数组列表,然后使用多态性能够引用原始对象?
我能想到的唯一方法是创建一个抽象类类型的 ArrayList,然后将原始 ArrayList 中的元素复制到其中,但我不需要副本。
最佳答案
假设您的具体类是 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()
中进行显式转换调用以便正确执行转换。
关于Java ArrayList,抽象类返回ArrayList的访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569884/