Инициализация массива с использованием {} в Java

Мы можем инициализировать массив следующим образом:

int myArray[][] = { {10,20} ,{30,40} , {50} };

Он отлично работает.

Но я столкнулся с особой ситуацией.

int myAnotherArray[][] = { {,} ,{,} , {,} };

Вышеприведенная строка кода компилируется отлично. Это по мне странно. Потому что, когда компилятор будет анализировать это утверждение, он будет встречать { и , и } все вместе. Разве компилятор не должен ожидать постоянного или литерала между ними? Я был бы признателен, если бы кто-нибудь рассказывал мне, как точно анализируется вышеуказанный оператор и что именно делает компилятор, когда он сталкивается с такой ситуацией.

Ответы

Ответ 1

Это просто причуда того, что синтаксис позволяет использовать запятые.

Предоставление конечных запятых, например, для генераторов кода, генерирующих такие вещи, как { 0, 1, }, и позволяет, например, удобно комментировать последнюю строку в

int[] myArray = {
    0,
//  1
};

(Как вы могли понять, trailing , игнорируется, т.е. { , } дает пустой массив.)

Связанные вопросы: