首页 > 解决方案 > 带括号语法的 Java 函数定义

问题描述

正在寻找源代码ByteArrayOutputStream,我看到了这个函数:

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

此语法记录在哪里?我的意思是[]在函数前面。这是否与声明一个常规数组相同,其中括号可以放在数组名称之后或之前,但在这种情况下,括号可以放在函数名称之后?

String[] args;

VS

String args[];

编辑:2018-05-22

我在这里发现了这种疯狂语法的更多用途:关于 Java 你不知道的 10 件事

#3 是他们提到可以利用上述语法的所有方式的地方

标签: javaarraysfunction

解决方案


JLS Sec 8.4中:

MethodDeclarator:
    Identifier ( [FormalParameterList] ) [Dims]

...

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


推荐阅读