我真的不明白为什么这行代码不能编译:
String str = new Object();
Run Code Online (Sandbox Code Playgroud)
而以下是:
Object o = new String("Hello");
Run Code Online (Sandbox Code Playgroud)
据我所知,String与其他所有类一样,扩展了Object.那么为什么第一行不编译呢?
Vic*_*748 23
因为String是一种Object,但Object不是一种String,就像每种橙子都是水果一样,但不是每种水果都是橙子.
String是一个扩展的类Object,所以你可以简单地写:
Object obj = "string";
Run Code Online (Sandbox Code Playgroud)
但Object不延伸String,所以:
String str = new Object();
Run Code Online (Sandbox Code Playgroud)
不会编译.
但是,如果你有一个Object,它是一个String,你可以做一些所谓的类型转换或简单的转换:
String str = (String) myObject;
Run Code Online (Sandbox Code Playgroud)
但它可能会抛出一个ClassCastExceptionif myObject不是原来的类型String
在这里,您可以在Java中找到有关Object Casting的更多信息:http://www.javabeginner.com/learn-java/java-object-typecasting
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |