ton*_*oan 28 java arrays type-inference exception java-10
我试图理解Java 10中的局部变量类型推断.
下面的代码在编译和运行时完美运行:
List list1 = Arrays.asList(1L, 2.0F, "3");
var list2 = list1;
Run Code Online (Sandbox Code Playgroud)但是,此行会引发编译错误:
var list3 = Arrays.asList(1L, 2.0F, "3");
Run Code Online (Sandbox Code Playgroud)
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<?>>
我真的不明白为什么第二种情况是错误的但不是第一种情况.因为我想到,编译器会推断出的类型list1
和治疗list2
以及list3
相同.提前致谢.
Zhe*_*lov 24
这是Java 10编译器中的一个错误:https://bugs.openjdk.java.net/browse/JDK-8199910
只有在javac
用-g
旗帜调用时才会重现.
可能的解决方法:
-g
旗帜
var
与交集类型一起使用(使用显式类型):
List<Object> list = Arrays.asList(1L, 2.0F, "3");
var list = Arrays.<Object> asList(1L, 2.0F, "3");
该错误已在JDK 10.0.2中修复.
归档时间: |
|
查看次数: |
759 次 |
最近记录: |