如何检查参数化方法?

时间:2011-10-04 13:56:35

标签: java generics parameterized

我想用这样的方法将Number转换为String:

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参数。我只能抓住Number,但永远不会浮动。

有一种方法可以使用ParameterizedType.getActualType()获取o Collection的实际参数,但参数化方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

在java中,由于type erasure,你无法推断出类似的泛型类型。您必须将方法签名更改为

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

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

并致电Float f = MathUtils.<Float>convert(Float.class, "2");

答案 1 :(得分:0)

您需要为每种类型使用不同的方法 - 名称,接口和实现。