JDK1.6.0
public class ClassCastException extends RuntimeException
当试图将对象强制转换为不是实例的子类时,抛出该异常。
例如,以下代码将生成一个 ClassCastException:
Object x = new Integer(0);
System.out.println((String)x);
例如:
public class TestClassCastException { /** * @param args */ public static void main(String[] args) { Object obj = new Integer(1); System.out.println((String) obj); } }
执行结果
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at TestClassCastException.main(TestClassCastException.java:9)
但是对于
public class TestClassCastException { /** * @param args */ public static void main(String[] args) { Object obj = new Integer(1); System.out.println(obj.toString()); } }
可以输出正确结果:1
对于Object的toString()详解:
在该段代码中obj.toString()将调用Integer重写的toString()方法
java.lang.Integer的toString()的源码为:
public String toString() { return String.valueOf(value); }
可以看到实际调用的还是java.lang.String的valueOf()方法
String.valueOf()的源码为:
public static String valueOf(int i) { return Integer.toString(i, 10); }