Определение функции Java с помощью синтаксиса скобок

Смотрел в источнике ByteArrayOutputStream, и я видел эту функцию:

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

Где этот синтаксис документирован? Я имею в виду [] перед функцией. Это то же самое, что и в объявлении регулярного массива, где скобка может идти после имени массива или раньше, но в этом случае скобка может идти после имени функции?

String[] args;

Vs

String args[];

Изменение: 2018-05-22

Я нашел еще больше использования этого сумасшедшего синтаксиса: 10 вещей, которые вы не знали о Java

# 3, где они упоминают все способы использования вышеупомянутого синтаксиса

Ответ 1

В JLS Sec 8.4:

MethodDeclarator:
    Identifier ( [FormalParameterList] ) [Dims]

...

Объявление метода, возвращающего массив, позволяет помещать некоторые или все пары скобок, которые обозначают тип массива после формального списка параметров. Этот синтаксис поддерживается для совместимости с ранними версиями языка программирования Java. Настоятельно рекомендуется, чтобы этот синтаксис не использовался в новом коде.