Есть ли разница между "Object [] x" и "Object x []"?
Я обновлял базу устаревшего кода на Java, и я нашел такую строку:
Object arg[] = { new Integer(20), new Integer(22) };
Эта строка привлекла мое внимание, потому что я привык к этому типу кода:
Object[] arg = { new Integer(20), new Integer(22) };
Содержимое массива здесь не важно. Мне интересны скобки рядом с именем переменной и скобками рядом с именем класса. Я попытался в Eclipse (с Java 5), и обе строки действительны для компилятора.
Есть ли разница между этими объявлениями?
Ответы
Ответ 1
Оба являются законными и обе работают. Но размещение [] перед именем массива рекомендуется.
От Javadocs:
Вы также можете поместить квадратные скобки после имени массива:
float anArrayOfFloats[]; // this form is discouraged
Однако конвенция препятствует этой форме; скобки идентифицируют тип массива и должны появляться с обозначением типа.
Ответ 2
Нет, они оба работают. Но будьте осторожны:
float anArrayOfFloats[], aSecondVariable;
объявит один массив поплавков и один float, а:
float[] anArrayOfFloats, aSecondVariable;
объявит два массива поплавков.
Ответ 3
Нет никакой разницы. Оба являются законными.
Вы можете прочитать в Спецификации языка Java http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
[] может отображаться как часть типа в начале декларации, или как часть декларатора для конкретную переменную или и то, и другое, как в этот пример:
byte[] rowvector, colvector, matrix[];
Ответ 4
Еще одна веская причина писать Integer[] ints
вместо Integer ints[]
- из-за отношений наследования: Integer[]
- подтип Number[]
- это подтип Object[]
.
Другими словами, вы можете поместить Integers
в массив Object
, поэтому вы можете думать о []
как об определении типа объекта, поэтому имеет смысл иметь его близко к вместо имени объекта.
Ответ 5
Короткий ответ: Нет.