Gibt es einen Unterschied zwischen "Objekt [] x" und "Objekt x []?
-
19-09-2019 - |
Frage
Ich habe eine Legacy -Code -Basis in Java aktualisiert und eine solche Zeile gefunden:
Object arg[] = { new Integer(20), new Integer(22) };
Diese Zeile hat meine Aufmerksamkeit erregt, weil ich an diese Art von Code gewöhnt bin:
Object[] arg = { new Integer(20), new Integer(22) };
Der Inhalt des Arrays ist hier nicht wichtig. Ich bin gespannt auf die Klammern neben dem variablen Namen im Vergleich zu den Klammern neben dem Klassennamen. Ich habe in Eclipse (mit Java 5) versucht und beide Zeilen sind für den Compiler gültig.
Gibt es einen Unterschied zwischen diesen Erklärungen?
Lösung
Beide sind legal und beide arbeiten. Aber platzieren [], bevor der Name des Arrays empfohlen wird.
Aus Javadocs:
Sie können auch die Quadratklammern nach dem Namen des Arrays platzieren:
float anArrayOfFloats[]; // this form is discouraged
Konvention entmutigt jedoch diese Form; Die Klammern identifizieren den Array -Typ und sollten mit der Typ -Bezeichnung angezeigt werden.
Andere Tipps
Nein, beide arbeiten. Aber achten Sie auf:
float anArrayOfFloats[], aSecondVariable;
wird eine Reihe von Schwimmern und einen Schwimmer erklären, während:
float[] anArrayOfFloats, aSecondVariable;
wird erklären zwei Schwimmarme.
Es gibt keinen Unterschied. Beide sind legal.
Sie können in der Java -Sprachspezifikation lesen http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
Der [] kann als Teil des Typs zu Beginn der Erklärung oder als Teil des Deklarators für eine bestimmte Variable oder beides wie in diesem Beispiel erscheinen:
byte[] rowvector, colvector, matrix[];
Ein weiterer guter Grund zum Schreiben Integer[] ints
Anstatt von Integer ints[]
ist an Vererbungsbeziehungen: Integer[]
ist Subtyp von Number[]
ist Subtyp von Object[]
.
Mit anderen Worten, Sie können setzen Integers
in einem (n Object
Array, so können Sie an das denken []
Als Teil der Typdefinition des Objekts - weshalb es sinnvoll ist, ihn dem Typ anstelle des Objektnamens nahe zu haben.
Kurze Antwort: Nein.