Edit: Dies wurde seither gelöst. Danke an alle, die geholfen haben. Der Aufruf der Methode nach dem Umsetzen des Objekts als korrekte Wrapper-Klasse hat funktioniert. Aber String.valueOf() ist viel, viel einfacher, den gleichen Effekt zu erzielen.Dynamische Umwandlung in Primitive in Java
Hello--
Was ich versuche möglich sein kann, nicht einmal zu tun. Ich habe jetzt ein paar Stunden damit verbracht, verschiedene Dinge zu recherchieren und zu experimentieren, also dachte ich mir, ich würde endlich fragen, ob jemand weiß, ob das überhaupt möglich ist.
Ist es möglich, mithilfe von Reflection einen Wrapper für ein primitives Element eines unbekannten Typs als primitives Element dynamisch zu generieren?
Ich versuche im Grunde, eine generische toString-Funktion zu erstellen, die die Umwandlung von jeder Art von Primitiven in eine Zeichenfolge verarbeiten kann. Solch ein scheinbar einfaches Ding ist frustrierend schwierig (und ich bin mir bewusst, dass ich jeden Typ testen könnte, um zu sehen, ob es vom Typ Wrapper.class ist und es spezifisch ausgibt, aber an diesem Punkt verfolge ich das nur aus Sturheit).
Folgendes löst eine ClassCastException aus. Die primClass-Klasse scheint die richtige zu sein (gibt "int" beim Drucken von primClass.getName()).
private String toString(Number obj){
String result = "";
try{
Class objClass = obj.getClass();
Field field = objClass.getDeclaredField("TYPE");
Class primClass = (Class)field.get(obj);
Method method = objClass.getMethod("toString", new Class[]{primClass});
Object args = new Object[]{primClass.cast(obj)};
result = (String)method.invoke(null, args);
}catch(Exception ex){
//Unknown exception. Send to handler.
handleException(ex);
}
return result;
}
Also bin ich ein bisschen ratlos, wirklich. Hat jemand Ideen? Jede Hilfe würde sehr geschätzt werden.
'toString' Methoden auf' Double, Long, ... 'tun Sie nicht was Sie wollen? – khachik