下面给出myClass
和非静态方法run()
,以下代码行有效:
new myClass().move();
但是,这也是有效的:
move();
我理解第一次尝试(new myClass().move()
)创建了一个类的实例,然后在其上调用该方法。第二次尝试是否也做了同样的事情,但含蓄地?换句话说,2次尝试是否真的相同?如果没有,那么根本区别是什么,哪一个更受欢迎?
OscarRyz在帖子here中的评论似乎触及了这一点,但他没有详细说明。
class myClass
{
void move() {
//...some code
}
void run() {
new myClass().move();
}
}
感谢。
答案 0 :(得分:1)
它们不一样。
如果您致电move();
,则在myClass
的当前实例上执行该方法(这与this.move();
相同)。
如果您致电new myClass().move();
,则可以在myClass
的新实例上执行此操作。
答案 1 :(得分:1)
它没有做同样的事情。
使用第一次尝试new myClass().move();
,您可以创建类的另一个实例,然后在此新实例上调用该方法。
但在第二次尝试move();
时,您只需调用当前实例的方法即可。你已经初始化了它。它与this.move();
第二个是首选,因为您不创建类的另一个实例,而是使用当前实例。