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