例如,需要编写一个用于添加的通用程序。它需要是智能的,它确定传递给它的参数类型,然后以相同的类型输出答案。 有关详细说明:
如果我只想写一个方法来添加两个数字(任何类型) 比如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;
}
答案 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);
}
//..
}