Как проверить параметризованный метод?
Я хотел бы преобразовать число из строки в такой метод:
class MathUtils{
public static <T extends Number> T convert(String str){
try{
//convert str depending on the parameter T
}catch(Exception e){
e.printStackTrace();
}
}
}
Затем я вызываю свою функцию с помощью:
Float f = MathUtils.<Float>convert("2");
К сожалению, даже глядя в отладчик, я понятия не имею, как получить этот параметр Float. Я просто могу держать номер, но никогда не плавать.
Есть способ получить фактический параметр o Collection с помощью ParameterizedType.getActualType(), но что за параметризованный метод?
Спасибо!
2 ответа
Решение
В Java из-за стирания типа вы не можете вывести общий тип таким образом. Вам придется изменить подпись вашего метода на
public static <T extends Number> T convert(Class<T> clazz, String str){
if (clazz == Float.class)
{
...
}
...
}
и позвонить Float f = MathUtils.<Float>convert(Float.class, "2");
Вам понадобится другой метод - имя, интерфейс и реализация - для каждого типа.