我想定义一个方法来在不同的类型号之间进行求和:
<T> void add (T one, T two)
{
T res = one + two;
}
Run Code Online (Sandbox Code Playgroud)
上面的方法不起作用,因为类型擦除转换T为Object
+因此+运算符没有定义Object...
怎么办?
谢谢.
所以,假设我想编写一个操作不同类型数字的类,但我不知道我将要操作的是什么类型的数字(即整数,双数等).
我想使用泛型来为这个场景创建一个通用类.就像是:
Adder<Double> adder = new Adder<Double>();
adder.add(10.0d, 10.0d); // = 20.0d
Run Code Online (Sandbox Code Playgroud)
但是,我无法实例化我传入Adder类的泛型类型!那么该怎么办?
我似乎无法弄清楚为什么我可以执行以下操作将 float 转换为 int:
float a = 3;
int b = (int)a;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试以下操作时:
public class MyTestCode{
public static int Add(Object a, Object b){
int c = (int)a;
int d = (int)b;
return c + d;
}
}
Run Code Online (Sandbox Code Playgroud)
...它给出了以下错误:
*Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
at myTestCode.MyTestCode.Add(MyTestCode.java:15)
at ch02.ex01.Ch02Ex01.main(Ch02Ex01.java:25)
Java Result: 1*
Run Code Online (Sandbox Code Playgroud)
为什么我可以在一个示例中从 float 转换为 int,而在另一个示例中则不能?