考虑下面的这段代码:
List<Integer> l=new ArrayList<>();
l.add(23);l.add(45);l.add(90);
Stream<Integer> str=l.stream(); // mark A
l.add(111);
l=null;
System.out.println(str.collect(Collectors.toList())); // mark B
Run Code Online (Sandbox Code Playgroud)
输出是:
[23, 45, 90, 111]
Run Code Online (Sandbox Code Playgroud)
我在这里假设,当在标记B处调用终端操作时,将评估标记A的RHS,这意味着已选择了最近的列表(带有元素“ 111”),但问题是为什么我们没有
NullPointerException来到这里。没有得到异常,那么我们也不应该在输出中得到“ 111”。.请帮助。