Array-Typen sind speziell in Java. Dies ist ein Auszug aus JLS 10.7 Array Members
Die Mitglieder einer Array-Typ sind alle der folgenden:
- The
public final
Feld length
, die die Anzahl der Komponenten des Arrays enthält (Länge positiv sind oder Null).
- Die
public
Methode clone
, die überschreibt die gleichnamige Methode in der Klasse Object
und wirft keine aktivierten Ausnahmen. Der Rückgabetyp der Clone-Methode eines Array-Typs T[]
ist T[]
.
- Alle Mitglieder geerbt von der Klasse Object; Die einzige Methode von Object, die nicht vererbt wird, ist ihre
clone
Methode.
Trotzdem gibt es noch alte stehenden Fehler, wenn Sie Reflexion auf Arrays verwenden: weder length
noch clone
konnte durch Reflexion zu finden (bug# 5047859, bug# 4987375).
Kein Mitglied wird auf traditionelle Weise von einer Oberklasse geerbt. Alle Array-Typen reichen von Object
direkt. Diese "spezielle Behandlung" ist wahrscheinlich, warum diese Fehler überhaupt existieren.
"bedeutet dies, dass man niemals die Länge der zu definierenden Variable sehen kann?"
Es gibt keinen tatsächlichen Quellcode für Array-Typen. Auch diese Typen sind besonders; Die JVM zieht diese Typen nur dann aus dem Hut, wenn sie benötigt werden. Sie werden keine .java
Quelldatei für den Array-Typ int[].class
(d. H. Den Typ aller int
Arrays) sehen.
Also, nein, werden Sie nicht in der Lage sein zu sehen das length
Feld definiert.
Für weitere Lesung, sind hier einige Informationen über Java Reflection:
Sprechen wir Stringlänge, Arraylänge, Objektgröße oder was? –
@Jason: Ich denke, er spricht über die Arrays. – missingfaktor
@Jason, ich denke, er spricht über array.length, String hat keine Längenvariable, es hat length() -Methode (was verwirrend ist, da es nicht getLength()). – medopal