Ala*_*ley 1 java casting object
我似乎无法弄清楚为什么我可以执行以下操作将 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,而在另一个示例中则不能?
这是因为在一种情况下您有一个原语,float
而在另一种情况下您有一个java.lang.Float
对象。要将那个对象转换为浮点数,这样的事情应该可以工作:
public static int add(Object a, Object b){
float c = (Float)a;
float d = (Float)b;
return (int)(c + d);
}
Run Code Online (Sandbox Code Playgroud)
首先转换回原始浮点数应该可以解决问题。