我知道这是行不通的,因为List是一个抽象接口:
List<Integer> l = new List<>();
这就是为什么我一直使用典型的ArrayList<>
.
我很好奇为什么下面的代码在将一个对象赋值为List<String> l
时是有效的:
ArrayList<E> al = new ArrayList<>();
List<String> l = al.stream().collect(Collectors.toList());
我的理解是,只有在实现了对象之后,才能从接口创建对象.谁能解释一下第二个代码片段为什么工作,以及我应该如何理解这种差异?