使用类

时间:2017-04-06 20:01:00

标签: java reflection numbers

我有一个带有这样签名的方法:

Number upcast(Number n, Class<? extends Number> type)

注意:我确信我的代码只会将原始包装类型传递给此方法(即Float.classInteger.class)。

如果传递的类型足够大以容纳传递的Number,我想将此数字作为传递类的实例返回。

否则,我想返回原来的Number

我怎样才能实现这样的方法,因为由于类型不同,我不能cast参数?

目前,我有:

try {
    double max = c.getDeclaredField("MAX_VALUE").getDouble(null);
    double val = n.doubleValue();
    double abs = Math.abs(val);
    if(abs >= max) return n;
    //Part 2?
    //Can't do type.cast(n), or valueOf.invoke(null, n). 
} catch (NoSuchFieldException | IllegalAccessException e) {
    ...
}

我最好如何实现这个目标?包装类的valueOf方法每个只接受它们各自的类型,所以我不能,例如,将double传递给???.valueOf

我是否需要使用多个if检查班级的类型,然后拨打n.???Value

0 个答案:

没有答案