Ваш {2, 3}
является примером ArrayInitializer
. В соответствии с JLS:
10.6. Array Initializers
«Инициализатор массив может быть указано в декларации (§8.3, §9.3, §14.4), или как часть выражения создания массива (§15.10), чтобы создать массив и предоставить некоторые начальные значения ».
Первые три случая предназначены для объявления переменных, и это не то, что вы делаете. Окончательный случай соответствует тому, что вы пытаетесь сделать ... создать экземпляр массива ... но если вы посмотрите на связанный раздел, вы увидите, что для этого вам нужно использовать ключевое слово Java new
.
Так почему же синтаксис Java не позволяет сделать это (myAL.add({2,3});
)?
Ну, я думаю, что основной причиной является то, что {2, 3}
недостаточно, чтобы сказать, какой тип массива должен быть создан ... во всех таких контекстах.
Рассмотрим это:
ArrayList myAL = new ArrayList();
myAL.add({2,3});
Какой массив уместен здесь? Должно ли это быть int[]
? Или long[]
? Или Integer[]
? Или Object[]
?
Другая вещь, которую следует помнить, это то, что инициализаторы массива были частью языка Java в Java 1.0 ...задолго до того, как язык Java включал в себя общие типы и ограниченное определение типов, которые могли (гипотетически) разрешить проблему двусмысленности решаемым разумным образом.
{2,3} Это не означает анонимный объект, чтобы сделать его вам нужно myAl.add (new int [] {2,3}); –
Я думаю, что вы можете добавить массив Int в ArrayList, а не его значения – mmratxs
Этот вопрос не имеет ничего общего с 'ArrayList', это просто синтаксическая ошибка. – EJP