从另一个非静态方法调用非静态方法

时间:2014-11-30 14:00:13

标签: java non-static

下面给出myClass和非静态方法run(),以下代码行有效:

new myClass().move();

但是,这也是有效的:

move();

我理解第一次尝试(new myClass().move())创建了一个类的实例,然后在其上调用该方法。第二次尝试是否也做了同样的事情,但含蓄地?换句话说,2次尝试是否真的相同?如果没有,那么根本区别是什么,哪一个更受欢迎?

OscarRyz在帖子here中的评论似乎触及了这一点,但他没有详细说明。

class myClass 
{
    void move() {
        //...some code
    }
    void run() {
        new myClass().move();
    }
}

感谢。

2 个答案:

答案 0 :(得分:1)

它们不一样。

如果您致电move();,则在myClass的当前实例上执行该方法(这与this.move();相同)。

如果您致电new myClass().move();,则可以在myClass的新实例上执行此操作。

答案 1 :(得分:1)

它没有做同样的事情。

使用第一次尝试new myClass().move();,您可以创建类的另一个实例,然后在此新实例上调用该方法。

但在第二次尝试move();时,您只需调用当前实例的方法即可。你已经初始化了它。它与this.move();

相同

第二个是首选,因为您不创建类的另一个实例,而是使用当前实例。