Как проверить параметризованный метод? - PullRequest
2 голосов
/ 04 октября 2011

Я хотел бы преобразовать число из строки в такой метод:

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 ]

2 голосов
/ 04 октября 2011

В Java из-за стирания типа 1002 * вы не можете вывести общий тип таким образом. Вам придется изменить сигнатуру вашего метода на

public static <T extends Number> T convert(Class<T> clazz, String str){

   if (clazz == Float.class)
   {
       ...
   }
   ...
}

и звоните Float f = MathUtils.<Float>convert(Float.class, "2");

0 голосов
/ 04 октября 2011

Вам понадобится другой метод - имя, интерфейс и реализация - для каждого типа.

...