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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top