Вы можете использовать что-то вроде:
String simpleName = targetType.getSimpleName().toLowerCase();
if (simpleName.equals("integer")) {
simpleName = "int";
}
Method m = number.getClass().getMethod(simpleName + "Value");
return (Number) m.invoke(number);
Это зависит от того факта, что Number
имеет такие методы, как longValue()
, floatValue()
и т.д.* или AtomicInteger
- вы можете использовать их конструктор отражательно, который принимает один аргумент - тип примитива.