在Java中返回原始数组的不一致性

时间:2015-03-08 13:11:38

标签: java arrays compiler-errors return

以下显示了实例化和返回基本数组的不同方法。但是,出于某种原因,最后一个不起作用。这种不一致是否有正确的解释?为什么最后一个块不起作用?

第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

1 个答案:

答案 0 :(得分:3)

  

为什么最后一个块没有工作?

因为数组初始值设定项(JLS 10.6)仅在变量声明中有效,根据您的第一个和第二个块,或者作为数组创建表达式(JLS 15.10.1)的一部分,根据您的第三块。

你的第四个块不是变量声明或数组创建表达式,所以它无效。

请注意,这根本不是特定于原始数组的 - 对于所有数组来说都是一样的。