代码之家  ›  专栏  ›  技术社区  ›  smac89

带括号的Java函数定义语法[重复]

  •  25
  • smac89  · 技术社区  · 8 年前

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

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

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

    String[] args;
    

    Vs公司

    String args[];
    

    编辑:2018-05-22

    我在这里发现了这种疯狂语法的更多用法: 10 things you didn't know about Java

    #3中提到了利用上述语法的所有方法

    1 回复  |  直到 7 年前
        1
  •  31
  •   Andy Turner    8 年前

    在里面 JLS Sec 8.4 :

    MethodDeclarator:
        Identifier ( [FormalParameterList] ) [Dims]
    

    。。。

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