下面的代码工作正常。
List<Integer> arr = new ArrayList<Integer>();
System.out.println(arr.getClass().getSimpleName()); // output: ArrayList
arr.add(0);
arr.add(1);
arr = arr.subList(0,1);
Run Code Online (Sandbox Code Playgroud)
但是如果你将第一行更改为
var arr = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
会出现错误:
java: 不兼容的类型: java.util.List<java.lang.Integer> 无法转换为 java.util.ArrayList<java.lang.Integer>
然而,即使arr是用第二种方式定义的,它的类型仍然是ArrayList,那么有什么区别呢?