[英]What kind of Exception occurred?
我试图创建一个测试ClassCastException:
在第1行:它按照我的预期打印出class cast exception
在第2行:它只打印exception.RuntimeExceptionTest$1B@7852e922
$ 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();
}
Line2不会抛出异常。 来自Oracle javadocs:
类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”和对象的哈希码的无符号十六进制表示组成。 换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
这意味着你的Line2只打印objA.toString()返回的内容,即
exception.RuntimeExceptionTest$1B@7852e922
因为exception.RuntimeExceptionTest是你的类名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.