Java ArrayList, return 抽象class ArrayList 的访问方法
Java ArrayList, access method to return ArrayList of abstract class
我有一个 ArrayList
包含派生自抽象 class 的对象,有没有办法 return 抽象 class 类型的数组列表,然后,使用多态性,能够引用原始对象?
我能看到的唯一方法是创建抽象 class 类型的 ArrayList
,然后将原始 ArrayList
中的元素复制到其中,但我不想要副本。
假设您的具体 class 是 Integer
,您的摘要 class、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()
调用中进行显式转换,以便正确执行转换。
我有一个 ArrayList
包含派生自抽象 class 的对象,有没有办法 return 抽象 class 类型的数组列表,然后,使用多态性,能够引用原始对象?
我能看到的唯一方法是创建抽象 class 类型的 ArrayList
,然后将原始 ArrayList
中的元素复制到其中,但我不想要副本。
假设您的具体 class 是 Integer
,您的摘要 class、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()
调用中进行显式转换,以便正确执行转换。