以下显示了实例化和返回基本数组的不同方法。但是,出于某种原因,最后一个不起作用。这种不一致是否有正确的解释?为什么最后一个块不起作用?
第1座
int[] a = new int[] {50};
return a; // works fine
第2区
int[] a = {50};
return a; // works fine
第3区
return new int[] {50}; // works fine
第4座
return {50}; // doesn't work
答案 0 :(得分:3)
为什么最后一个块没有工作?
因为数组初始值设定项(JLS 10.6)仅在变量声明中有效,根据您的第一个和第二个块,或者作为数组创建表达式(JLS 15.10.1)的一部分,根据您的第三块。
你的第四个块不是变量声明或数组创建表达式,所以它无效。
请注意,这根本不是特定于原始数组的 - 对于所有数组来说都是一样的。