【发布时间】:2017-10-07 14:00:02
【问题描述】:
这是我的示例代码:
String str = "hello";
Object obj = (Object)str;
System.out.println(obj.toString());
找到了Object的源码,toString()方法是:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
我认为示例的结果应该是这个对象的地址,比如 [B@15db9742 ,在我将 str 转换为 Object 之后,但它仍然打印你好。为什么? obj不应该使用Object的方法吗?谁能给我解释一下它的原理?
【问题讨论】:
-
欢迎来到polymorphism。 :-) (必须有一个欺骗目标。)
-
Method Overriding - 您只更改引用类型,实际对象仍然是 String 并且
String的toString返回实际字符串 -
...但我没有找到一个非常好的。但这只是我没有时间搜索。
-
你没有将
String转换到Object- 你是casting(在这种情况下,演员不是即使有必要,您也可以只做Object obj = str;而不进行强制转换)。投射不会改变(即转换)对象。
标签: java