我正在尝试理解Java 10中的局部变量类型推断。
以下代码在编译和运行期间都可以正常工作:
List list1 = Arrays.asList(1L, 2.0F, "3"); var list2 = list1;
然而,这一行会抛出编译错误:
var list3 = Arrays.asList(1L, 2.0F, "3");
错误:java: java.lang.AssertionError: 意外的交叉类型: java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>>
我不太明白为什么第二种情况是错的,而第一种情况却没有问题。因为我预期编译器会推断出
list1
的类型并将list2
和list3
视为相同的类型。谢谢。
List
。当然,当您使用var
时,编译器将不会推断出“原始类型”List
。请参考此链接:https://dev59.com/m3E85IYBdhLWcg3wdDIM - Holger