我想对两个扩展Number的相同类型的泛型参数执行操作.
可能吗?
我总是习惯在泛型参数上调用方法,但似乎使用运算符存在一些问题(对于参数类型T,T,运算符未定义).
public static <T extends Number> T sum(T a, T b){
return a+ b;
}
我究竟做错了什么?
编辑:
我试着改善一点我的问题.我知道操作符没有为Number类型定义.这件事有点让人伤心,因为在不引入@Victor Sorokin建议的新界面的情况下执行这样的操作会很好.
但是我仍然不明白一件事:如果运算符没有在Number类中实现,那么至少在Double类中应该实现,因为我可以使用operator with double.
这些代码行都不会编译:
public static <T extends Double> T sum(T a, T b){
T c = a +b;
}
为什么?
解决方法:
这是不可能的,因为Number没有与之关联的运算符.特别是,你不能这样做:
Number a = new Integer(1);
Number b = new Integer(2);
Number c = a + b;