如何从方法返回一个对象来计算?

时间:2017-05-27 21:35:01

标签: java

我想这样做:sum += castObjectToNumber(value)castObjectToNumber应该看起来像这样:

private Number castObjectToNumber(Object value) {
    if(value instanceof Integer) {
        return (int)value;
    } else if(value instanceof Float) {
        return (float) value;
    } else if(value instanceof Double) {
        return (double) value;
    } else if(value instanceof Long) {
        return (long) value;
    } else if(value instanceof Byte) {
        return (byte) value;
    } else if(value instanceof Short) {
        return (short) value;
    }
}

我无法改变,我得到了Object类型的值,我希望这是一个通用的解决方案。我的问题是,如果我返回一个Number对象,因为这是所有这些类型的唯一共同点,我不能使用+=运算符。那我怎么用Java做这个呢?我认为我确实选择了错误的返回类型,因此它不起作用,但我不确定什么是正确的。

2 个答案:

答案 0 :(得分:1)

你的sum变量有一个预定的类型,很可能是double,因为double是"最大的"那些类型。因此,您可以安全地将所有数字类型转换为double。此示例假定您的对象可以转换为Number。

Number number = (Number) obj;
sum += number.doubleValue();

答案 1 :(得分:0)

因为没有直接的方法来覆盖java中的算术运算符 - 建议你只需在你的数字'中添加2种方法。类: add(Number n),sub(Number n)执行你需要的算术运算