Редактировать: с тех пор это было решено. Спасибо всем, кто помог. Вызов метода после приведения объекта как правильный класс обертки сработал. Но String.valueOf () намного, намного проще достичь того же эффекта.
Hello -
То, что я пытаюсь сделать, может даже оказаться невозможным. Я провел несколько часов, исследуя и экспериментируя с различными вещами, поэтому я решил наконец спросить, не знает ли кто-нибудь, возможно ли это.
Можно ли с помощью отражения динамически приводить оболочку для примитива неизвестного типа в качестве примитива?
Я в основном пытаюсь создать универсальную функцию toString, которая может обрабатывать преобразование любого типа примитива в строку. Такая, казалось бы, простая вещь разочаровывающе трудна (и я знаю, что могу просто протестировать каждый тип, чтобы увидеть, относится ли он к типу Wrapper.class, и специально разыграть его, но на данный момент я просто преследую это из упрямства) 1009 *
Следующее создает исключение ClassCastException. Класс primClass представляется правильным (дает «int» при печати 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;
}
Так что я немного растерялся, правда. У кого-нибудь есть идеи? Любая помощь будет принята с благодарностью.