Klassentypinformationen in Java dekodieren
Oft stoßen wir auf Zeichenfolgen wie „[Ljava.lang.Object;““ beim Arbeiten mit Klassentypen in Java. Um den tatsächlichen Typ eines Objekts zu identifizieren, ist es wichtig zu verstehen, wie diese Kodierung dekodiert wird.
Diese Kodierung folgt einem bestimmten Benennungsschema, das in Class.getName() dokumentiert ist. Wenn ein Klassenobjekt einen Array-Typ darstellt, besteht sein Name aus dem Namen seines Elementtyps, dem eckige Klammern „[“ vorangestellt sind. Beispiel: „[Ljava.lang.Object;“ stellt Object[] dar, ein Array von Objekten.
Die folgende Tabelle fasst die Codierung gängiger Elementtypen zusammen:
Element Type | Encoding |
---|---|
boolean | Z |
byte | B |
char | C |
double | D |
float | F |
int | I |
long | J |
short | S |
Class or interface | Lclassname; |
Arrays überschreiben nicht die von Object geerbte toString()-Methode , die eine Zeichenfolge im folgenden Format zurückgibt:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Aus diesem Grund gibt toString() von Arrays eine Zeichenfolge in dem spezifischen Format zurück, auf das wir stoßen, einschließlich der Array-Klammern und Codierung von Klassennamen.
Während davon abgeraten wird, sich bei der Dekodierung von Array-Typen auf toString() zu verlassen, bietet Java alternative Methoden zum Abrufen von Typinformationen. Der Aufruf von getClass() für ein Objekt gibt ein Class-Objekt zurück, das für Reflexionszwecke verwendet werden kann. Darüber hinaus bietet java.util.Arrays Überladungen von toString() für primitive Arrays und Object[], wodurch es einfacher wird, eine für Menschen lesbare Darstellung von Array-Inhalten zu erhalten.
Das obige ist der detaillierte Inhalt vonWie dekodiere ich die Klassentypkodierung „[Ljava.lang.Object;' von Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!