Datentypen Typbestimmung unbekannter Wrapper-Klassen

D

datenklaun

Gast
Hallo

Zur Zeit arbeite ich an einer Art einfachem Interpreter, und stieß dabei auf das Problem, aus primitiven Datentypen, die mithilfe der Wrapper-Klassen in „java.lang” zu Objekten umgewandelt wurden, den zugrundeliegenden prim. Typ abzuleiten. Dazu wollte ich nach folgendem Prinzip vorgehen:

Java:
Object Int = new Integer(83);
Int.getClass().TYPE;

Das führt unweigerlich zu einem Compiler-Error, den ich nicht verstehe.
Leider werden die Daten erst zur Laufzeit verpackt, was ein explizites Casten unmöglich macht.
Es freut mich sehr, wenn mir jemand einen Tip dazu geben kann, denn wahrscheinlich übersehe ich einen grundsätzlichen Fehler - bin noch rel. neu, was Java betrifft und habe noch nicht alles so ganz verstanden.

Viele Grüße, Datenklaun.
 
G

Gast2

Gast
Die Beziehungen
Code:
int.class <-> Integer.class
kann man so ohne weiteres glaube ich nicht herleiten. Was du aber machen kannst ist dir eine Map anzulegen die diese Beziehungen abbildet.

Java:
Map<Class<?>, Class<?>> primitiveWrappers = new HashMap<Class<?>, Class<?>>();
primitiveWrappers.put(Integer.class, int.class);
// ... alle anderen Wrapper

Object intObject = new Integer(83);
Class<?> primitive = primitiveWrappers.get(intObject.getClass());
 
D

datenklaun

Gast
Hallo

Nachdem ich mich, trotz eurer guten Antworten, noch stundenlang mit dem TYPE beschäftigt habe, kam ich doch zu dem Entschluß, daß eine dieser Lösungen schneller umzusetzen ist.
Da es sich bei meinem Experiment bisher um die Basis eines Interpreters handelt, der diese Typbestimmung wahrscheinlich sehr sehr oft in Folge ausführt, führte ich für beide Möglichkeiten einen Performance-Test aus, mit dem Ergebnis, daß die Hashmap deutlich langsamer war.
Der Test mit den 8 Variablen, die jeweils 10000 mal auf ihren Typ geprüft wurden, ergab bei dem Namensvergleich ca. 123.000 ns und bei der Hashmap ca. 170.000 ns.
Danke euch beiden für die Expressantworten, die mir viel Zeit mit stumpfem, aussichtslosem Experimentieren erspart haben.

Viele Grüße,
der Datenclown.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
D Unbekannter Fehler Allgemeine Java-Themen 1
Thallius HTTPS Request mit unbekannter Instanz Allgemeine Java-Themen 24
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
G Exception mit unbekannter Quelle Allgemeine Java-Themen 11
S array von unbekannter größe Allgemeine Java-Themen 2
M Dynamisches ausführen von methoden unbekannter klassen Allgemeine Java-Themen 6
S AffineTransform Wrapper der im Uhrzeigersinn rotiert..? Allgemeine Java-Themen 2
T JNI Wrapper Klasse Allgemeine Java-Themen 18
E wie call by reference mit Wrapper-Klassen? Allgemeine Java-Themen 2
dayaftereh Java executable wrapper? Allgemeine Java-Themen 4
K Wrapper um ZipInputStream funktioniert nicht Allgemeine Java-Themen 2
H Einbinden einer 3rd party DLL via Java Wrapper (JNI) Allgemeine Java-Themen 11
J Wrapper Array in korresp. primitiven Array umwandeln? Allgemeine Java-Themen 2
A Eigene Wrapper-Klassen Allgemeine Java-Themen 2
G Object. Wrapper Allgemeine Java-Themen 12
R JNI-Dlls aus dynamischen Wrapper-Klassen laden Allgemeine Java-Themen 14
S Java Wrapper Allgemeine Java-Themen 6
M Java Wrapper für interaktive Perl-Skripte Allgemeine Java-Themen 3
G wrapper --> unwrapper Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben