方法后的Java方括号

时间:2019-05-15 23:35:43

标签: java

最近我遇到了这样的方法声明:

java.io.ByteArrayOutputStream

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}

[]之后的方法符号是什么意思?

2 个答案:

答案 0 :(得分:2)

显然,Java的早期版本在方法名称和签名之后带有方括号,它适用于返回类型。 toByteArray方法返回一个byte[]

Section 8.4 of the JLS给出了语法和历史依据。

  

MethodDeclarator:

     

标识符([ReceiverParameter,] [FormalParameterList])[Dims]

[Dims] 元素表示一对或多对空括号,例如[][][]

  

允许返回数组的方法的声明将表示数组类型的部分或全部括号对放在形式参数列表之后。支持此语法以与Java编程语言的早期版本兼容。强烈建议在新代码中不要使用此语法。

这允许以下可恶的行为:

public int[] return2DArray() [] { return new int[][] {{0, 1}, {2, 3}}; }

...,其中一对与int在一起,另一对在签名之后。这将返回一个2D数组。

我同意不要自己做的建议。

答案 1 :(得分:1)

这只是另一种写作方式:

    public synchronized byte[] toByteArray() {
        return Arrays.copyOf(new byte[] {}, 1);
    }

表示数组;用相同的方法可以在类型或变量上用方括号声明变量以表示特定类型的值的数组:

        // ARRAY DECLARATION NOTATION ONE
        byte[] array1;

        // ARRAY DECLARATION NOTATION TWO
        byte array2[];

虽然不是很常见。大多数人将第一个符号用于变量和返回类型声明(类型后面的括号)。