String to Object但不是Object to String?

won*_*ggr 6 java

我真的不明白为什么这行代码不能编译:

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