假设我们有一个类World,我们已经声明了dreamWorld该类的实例.情况1如何与案例2不同,除了它的一条线更短?在第二种情况下实例化实际上有什么区别?我的意思是,dreamWorld在这两种情况下,afterall 都是一样的,对吧?
案例1:
void changeWorld(World outerWorld) {
World dreamWorld;
dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)
案例2:
void changeWorld(World outerWorld) {
World dreamWorld;
dreamWorld = new World();
dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)
where outerWorld是World在别处创建的类的对象,比如说,作为方法参数提供(我不确定它是如何提供的重要).
PS 谢谢你所有的提示和有用的回复,伙计们,对不起我的延迟感谢(我花了很多时间阅读一些我觉得有必要完全理解你的回复的文献).
案例2毫无意义.您实例化一个新World对象,然后在分配时丢失对该行的引用dreamWorld = outerWorld,将其留给垃圾收集器进行收集.
编辑:
正如@Rob指出的那样,对前面提到的语句的一个警告是,World构造函数执行一些外部交互,实例化它仍然会产生影响.dreamWorld但是,将其分配是没有意义的,因为此引用将丢失.