“数组初始值设定项需要显式目标类型” - 为什么?
2022-09-01 15:20:56
遵循 JEP 286:局部变量类型推断说明
我想知道,引入这种限制的原因是什么,因为:
Main.java:199: error: cannot infer type for local variable k var k = { 1 , 2 }; ^ (array initializer needs an explicit target-type)
所以对我来说,从逻辑上讲,它应该是:
var k = {1, 2}; // Infers int[]
var l = {1, 2L, 3}; // Infers long[]
因为 Java 编译器已经可以正确推断出数组的类型:
void decide() {
arr(1, 2, 3); // call void arr(int ...arr)
arr(1, 2L, 3); // call void arr(long ...arr)
}
void arr(int ...arr) {
}
void arr(long ...arr) {
}
那么障碍是什么呢?