日期:2014-05-17  浏览次数:20754 次

字符串转数值,泛型类型转换问题
hi 我写了一个方法,用于将数值型字符串转换成数值的,但是数值型有byte/short/int/long/float/double等,我不想写多个相同功能的方法,请问各位是否有办法可以将以下方法合并成一个,我们只要将类型以泛型传入即可。


public static int parseInt(String str, int defaultValue)
    {
        try
        {
         return Integer.valueOf(str);
        }
        catch (NumberFormatException ex)
        {
            return defaultValue;
        }
    }

public static short parseShort(String str, short defaultValue)
    {
        ...
    }

public static long parseLong(String str, long defaultValue)
    {
        ...
    }


谢谢。
------解决方案--------------------

/**
 * 
 * @author
 * @date 2014-4-27
 * @param clazz
 * @param numberStr
 * @param defaultValue
 * @return
 */
public static Number conv(Class<? extends Number> clazz, String numberStr, Number defaultValue) {
try {
if(Integer.class.isAssignableFrom(clazz)) {
return Integer.parseInt(numberStr);
} else if(Long.class.isAssignableFrom(clazz)) {
return Long.parseLong(numberStr);
} else if(Short.class.isAssignableFrom(clazz)) {
return Short.parseShort(numberStr);
} else if(Double.class.isAssignableFrom(clazz)) {
return Double.parseDouble(numberStr);
} else if(Float.class.isAssignableFrom(clazz)) {
return Float.parseFloat(numberStr);
}
} catch(Exception e) {
return defaultValue;
}
return defaultValue;
}

------解决方案--------------------
顶楼上 的。看看吧。