ClassCastException

 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);
    }

     

你可能感兴趣的:(java,thread)