【问题标题】:Inconsistency in returning primitive arrays in Java [duplicate]在Java中返回原始数组的不一致[重复]
【发布时间】:2015-05-09 17:04:07
【问题描述】:

下面展示了实例化和返回原始数组的不同方法。但是,由于某种原因,最后一个不起作用。这种不一致是否有有效的解释?为什么最后一个块不起作用?

第 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

【问题讨论】:

    标签: java arrays compiler-errors return


    【解决方案1】:

    为什么最后一个块不起作用?

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

    您的第四个块既不是变量声明也不是数组创建表达式,因此无效。

    请注意,这根本不特定于原始数组 - 所有 数组也是如此。

    【讨论】:

    • 太好了,谢谢!我真的不明白它是如何应用的,因为您不能真正省略 List<Integer> = new ArrayList<>(); 中的 new
    • @Calculus5000:那不是数组,是吗?基本上,数组的语法与其他事物的语法并不完全相同。
    • 哦,好的。那么它只适用于原始数组吗?因为我被Note that this isn't specific to primitive arrays at all - it's the same for all arrays.弄糊涂了,在Java中,我明白数组和原始数组是同义词,对吧?
    • @Calculus5000:不,一点也不。例如:String[] x = { "foo", "bar" };String 不是原始类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2021-10-22
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多