Primitive Datentypen - Klassenpfad auflösen?

White_Fox

Top Contributor
Mahlzeit allerseits

Ich will per Reflexion ein Objekt untersuchen und lasse mir mit Field.getType().getCanonicalName() den Klassenpfad liefern.

Wenn jetzt ein Feld aber z.B. als int deklariert wurde, wird das nicht automatisch zu Integer geautoboxt. In diesem Fall liefert die Methode "int".
Gibt es eine Möglichkeit, den korrekten String (in diesem Fall "java.lang.Integer") zu bekommen? Für alle primitiven Datentypen?
 
Warum sollte denn für den Typ `int` der Wert `java.lang.Integer` korrekt sein?
Es ist eben ein primitiver int und kein java.lang.Integer.
Wenn du zu einem `int` einen `java.lang.Integer` haben möchtest, musst du das höchstwahrscheinlich selber bauen (z.B. als selbstgebaute Map<Class, Class> und dann per Lookup).
Für primitive ints bekommst du die spezielle Klasse `int.class` bzw. `Integer.TYPE` geliefert.
 
Naja, ich will die Informationen auf Byteebene runterbrechen (um sie in einer Datei zu speichern), und danach später wieder Objekte zusammenbauen will. Dazu speichere ich auch den Klassenpfad z.B. der Membervariablen und wenn da "int" im String steht gibt es jedesmal eine Exception. Jedenfalls habe ich das gerade im Verdacht für einige Fehler, die ich ständig bekomme.
 
Die primitiven Typen haben in Java und der JVM immer eine gewisse "Sonderstellung". boolean, byte, short, char, int, long, float und double sind keine Referenztypen (sind also keine Instanzen einer Klasse) und müssen immer gesondert behandelt werden.
 

Zurück
Oben