是否可以检查传递给函数的参数的类型并在JAVA中相应地对待它?

时间:2015-03-07 13:07:52

标签: java generic-programming

例如,需要编写一个用于添加的通用程序。它需要是智能的,它确定传递给它的参数类型,然后以相同的类型输出答案。 有关详细说明:

  

如果我只想写一个方法来添加两个数字(任何类型)   比如int,float,double等),我应该怎么做方法本身   确定传递的数字类型并返回计算的总和   相同的类型?

有没有办法解决这个问题?任何帮助将非常感谢!

代码视图:例如,传递的参数是5& 6即整数。

addition(5,6);

现在,我想要的是一个函数add,以某种方式确定类型(在这种情况下是整数)&返回结果。像:

public (determined return type) add((determined returned type) space variable, (determined returned type) space variable){ return result; }

3 个答案:

答案 0 :(得分:0)

这应该有效:

public static <T extends Number> T addition(T a, T b) {
    if (a instanceof Integer)
        return (T) (Object) (a.intValue() + b.intValue());

    // + similar code for all primitive types and possibly also BigInteger and BigDecimal
}

答案 1 :(得分:0)

您可以声明一个方法:

public <N extends Number> N add(N n1, N n2)

这需要instanceof检查才能实际实现并返回所需的类型。

答案 2 :(得分:0)

更复杂的答案。

@SuppressWarnings("unchecked")
public <T extends Number> T addition (T argA, T argb)
{
    if(argA instanceof Integer)
    {
        return (T)new Integer ((Integer)argA + (Integer)argb);
    }
    else if (argA instanceof Double)
    {
        return (T)new Double((Double)argA + (Double)argb);
    }
    //..
}