我想用这样的方法将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的实际参数,但参数化方法是什么?
谢谢!
答案 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)
您需要为每种类型使用不同的方法 - 名称,接口和实现。