遵循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) {
}
那么有什么障碍呢?
每当我们提高Java中类型推论的范围时,我们都会得到“但是您也可以推论这一点,为什么不呢?”。(或者有时候,礼貌些。)
有关设计类型推断方案的一些一般性意见:
我对Swift类有一个问题。我有UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和网点。这个类有一个错误Class“HomeCell”没有初始化程序,我不明白这个问题。 感谢您的回复。
问题内容: 是否有任何特定原因为何未将对指定的初始化程序的支持添加到g ?是C99标准来晚了,而g 却被开发得更早,后来人们却不在乎这个问题的原因,还是在C ++语法中实现指定的初始化程序存在一些固有的困难? 问题答案: 正如我在评论中指出的那样,G ++不支持C99标准指定的初始化程序,但是它支持对C90的GNU扩展,它允许指定的初始化程序。所以这不起作用: 但这确实是: 这似乎是C和C 标准委
在我的Angular应用程序中,我有一个组件: 但在“make”属性中我有一个错误。我不知道该怎么处理...
我通过解决一些黑客等级问题来学习java。下面的代码是关于学习静态初始值设定项块的。例外情况是thown和Capture,但程序仍在运行,我不确定原因。 输入:-1,2 预期输出:java.lang.例外:宽度和高度必须为正 实际输出:宽度和高度必须为正-2
我甚至知道这在C++11标准中有什么规定:14.8.2.5/5子弹5: [如果程序有]一个函数参数,该函数参数的关联参数是初始值设定项列表(8.5.4),但该参数没有std::initializer_list或可能引用CV限定的std::initializer_list类型。[示例: 模板空隙g(T);