getClass Methode Java mit array-Typen
Also ich habe in etwas seltsam und ich weiß nicht, was es heißt, so ich habe Probleme, herauszufinden, Informationen darüber, daher meine Frage hier.
Ich habe laufen in ein Problem, wo, wenn Sie erstellen ein array von jedem Typ und jeder Aufruf getClass auf dieses array in Java erhalten Sie eine ungerade zurück. Ich Frage mich, warum man dieses spezifischen Rückkehr-und was es bedeutet.
Code-Beispiel ist wie folgt:
byte[] me = new byte[1];
int[] me2 = new int[1];
double[] me3 = new double[1];
float[] me4 = new float[1];
String[] me5 = new String[1];
Integer[] me6 = new Integer[1];
System.out.println(me.getClass());
System.out.println(me2.getClass());
System.out.println(me3.getClass());
System.out.println(me4.getClass());
System.out.println(me5.getClass());
System.out.println(me6.getClass());
und die Ausgabe ist:
class [B
class [I
class [D
class [F
class [Ljava.lang.String;
class [Ljava.lang.Integer;
InformationsquelleAutor Dustin Jensen | 2011-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den toString - Methode der Klasse aufruft, die getName - Methode der Klasse, die
InformationsquelleAutor emory
Es ist nur eine blöde Namensgebung. Wäre viel besser, wenn Sie mehr menschlich lesbar:
class byte[]
,class java.lang.Integert[][]
InformationsquelleAutor irreputable
Den
[
am Anfang der name der Klasse sollte gelesen werden als "array of...", " ... " wird das, was folgt, die[
; die Konventionen für das, was folgt, nden Sie in der Dokumentation fürClass.getName()
@emory zitiert und verlinkt wird.Abschnitt 4.3.1 der Java Language Specification beginnt: "Ein Objekt ist eine Instanz der Klasse oder ein array." Dies deutet darauf hin, dass arrays sind keine Klasse-Instanzen. (Vielleicht ist das, was @TigerTrussell war immer bei in seiner Antwort.) Allerdings Abschnitt 10.8 beginnt: "Jedes array hat eine zugehörige Class-Objekt, gemeinsam mit allen anderen arrays mit der gleichen Komponente geben. Die direkte Oberklasse eines array vom Typ Object ist." Dies deutet darauf hin, dass arrays sind, wenn nicht wahr, Klasse Instanzen, so ziemlich in der Nähe.
Leider die syntax-Regeln für Java verbieten Erben von einem array-Typ:
Beachten Sie, dass dies ein syntax-Einschränkung; es gibt keine konzeptuelle oder semantische Barrieren (und es ist erlaubt in vielen anderen OO-Sprachen).
InformationsquelleAutor Ted Hopp
Sind das die Namen von den zugrunde liegenden Typ-Objekt. Die
[
gibt es ein array, und der folgende Brief zeigt die array-Typ. B=byte, I=integer, D=double, etc. "L" ist für Klasse Typ Mitglieder, wie Sie sehen können.InformationsquelleAutor Jim Garrison
Arrays haben keine Klassen, Sie sind einfach Datenstrukturen. Das einzige Ding ist, das eine Klasse wäre, etwas erweitert, von Objekt ist in dem array.
Arrays sind auf jeden Fall Objekte. Zum Beispiel macht es durchaus Sinn, dies zu tun:
int[] a = new int[3]; System.out.println(a.getClass().getName());
Das hängt von Ihrer Perspektive. Es ist völlig legal zu sagen
int[].class
.Ich bin nicht einverstanden. Wenn arrays nicht über Klassen, dann wny nicht die Methode der Klasse haben ein isArray Methode, die Bestimmt, ob das Class-Objekt repräsentiert ein array-Klasse. -- download.oracle.com/javase/1,5.0/docs/api/java/lang/...
Wer sagt, dass Sie haben werden, um ein Objekt für eine Klasse? Ein
int
ist nicht ein richtiges Objekt (autoboxing abweichend), aber es hat immer noch eine Klasse. Und wenn Sie wollen, um über technische, jedes Objekt (und primitive) ist nur einen zusammenhängenden block von den zugewiesenen Speicher für einen bestimmten Typ.InformationsquelleAutor TigerTrussell