【发布时间】:2015-09-24 09:12:29
【问题描述】:
我有一个将对象作为输入的方法,如果输入是 instanceOF Long,则将值转换为双精度值。下面是代码:
public static void main(String[] args) {
Long longInstance = new Long(15);
Object value = longInstance;
convertDouble(value);
}
static double convertDouble(Object longValue){
double valueTwo = (double)longValue;
System.out.println(valueTwo);
return valueTwo;
}
但是当我执行上面的代码时,我遇到了异常:
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double
at com.datatypes.LongTest.convertDouble(LongTest.java:12)
at com.datatypes.LongTest.main(LongTest.java:8)
请告诉我为什么它给了我例外。
但是如果直接尝试将 Long 对象转换为 double 则不会出现 classCast 的异常。
Long longInstance = new Long(15);
double valueOne = (double)longInstance;
System.out.println(valueOne);
这令人困惑。
【问题讨论】:
-
您不能将 Object 转换为原始类型。就是这样。
-
((Long) longValue).doubleValue() -
@Kii,如果对象是包装类类型,您实际上可以,然后将进行拆箱...
-
既然没有原始类型对象,我想我是对的。
-
是的,你是对的,但如果我喜欢 Long longInstance = new Long(15); double valueOne = (double)longInstance;那么它不会给我任何异常,而如果我将 longInstance 包装到 Object 中并做同样的事情,那么它会给出 ClassCastException。
标签: java