为什么在将 Arrays.asList() 直接分配给 var 时,我会得到一个 AssertionError?
2022-09-01 14:29:27
我试图理解Java 10中的局部变量类型推断。
-
下面的代码在编译和运行时可以完美地工作:
List list1 = Arrays.asList(1L, 2.0F, "3"); var list2 = list1;
-
但是,此行会引发编译错误:
var list3 = Arrays.asList(1L, 2.0F, "3");
Error:java: java.lang.AssertionError: Unexpected intersection type: java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>>
我真的不明白为什么第2种情况是错误的,而不是第1种情况。因为我希望编译器会推断出的类型和对待和相同。提前致谢。list1
list2
list3