如何在Java中使用generics语言运算符和扩展Number的generics类

我想对两个扩展Number的相同类型的generics参数执行操作。

可能吗? 我总是习惯在generics参数上调用方法,但似乎使用运算符存在一些问题(对于参数类型T,T,运算符+未定义)。

public static  T sum(T a, T b){ return a+ b; } 

我究竟做错了什么?

编辑:我试着改善我的问题。 我知道运营商没有为Number类型定义。 这件事有点让人伤心,因为在不引入@Victor Sorokin建议的新界面的情况下执行这样的操作会很不错。

但是我仍然不明白一件事:如果运算符没有在Number类中实现,那么至少在Double类中应该实现,因为我可以使用+运算符和double。 这些代码行都不会编译:

 public static  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; 

Java中的类没有+运算符(String除外,当其中一个参数为String时,通过toString()隐式转换其他类型)。 所以,让你输入一些接口,比如说

 interface Valuable { // use richest built-in numeric type double value(); Valuable value(double v); } public static  T sum(T a, T b){ return a.value(a.value() + b.value()); } 

丑,不是吗? = d