发生了什么样的异常?

时间:2018-01-13 05:39:56

标签: java exception

我尝试创建一个测试ClassCastException:

在第1行:它按照我的预期打印出class cast exception  在第2行:它只打印exception.RuntimeExceptionTest$1B@7852e922(RuntimeExceptionTest是我的类名)。我想知道这里有什么样的例外?

 try {
            class A { }
            class B extends A {}
            class C extends A {}
            A objA = new B();
            System.out.println((C)objA); // Line 1
            System.out.println((A)objA); // Line 2
        } catch (Exception e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:3)

Line2不会抛出异常。来自Oracle javadocs:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@'”以及哈希代码的无符号十六进制表示形式组成。宾语。换句话说,此方法返回一个等于值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

这意味着你的Line2只打印 objA.toString()返回的内容,这是

 exception.RuntimeExceptionTest$1B@7852e922

因为 exception.RuntimeExceptionTest 是你的类名。