这个Java方法被调用了什么?

时间:2016-03-30 00:30:00

标签: java

好吧,所以我是Java的新手,对于任何能够回答它的人都有一个快速的问题。

这个doSomething方法调用了什么对象?它与调用this.doSomething()?

相同
public class Something{

    public void doSomething(){
         System.out.println("Something is done");
    }

    public Something(){
    //what object is this being called on?
       doSomething();
    }

    public static void main(String[] args){
        Something foo = new Something();
    }
}

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:0)

  

这个被调用的对象是什么?

将分配给foo的引用,在构造函数的范围内,它是 this 引用。是的,doSomething();(在此上下文中)相当于this.doSomething();

通过向UUID添加Something(并在doSomething中显示),我们可以看到这种情况,

public Something() {
    uuid = UUID.randomUUID().toString();
    doSomething();
}
private final String uuid;
public void doSomething() {
    System.out.println(uuid);
}

然后再次在doSomething()中调用main

public static void main(String[] args) {
    Something foo = new Something();
    foo.doSomething();
}

你会得到两次相同的UUID。

答案 1 :(得分:0)

是的,doSomething是在Something类中定义的。因此,这与this.doSomething()相同。

要从课堂外调用doSomething()(在" Something"类中声明),您需要像这样调用它:

public static void main(String[] args){
    Something foo = new Something();
    foo.doSomething();
}

答案 2 :(得分:0)

是。调用this.doSomething与调用doSomething()相同。不确定GUI正在使用什么。例如,如果您使用Eclipse并使用以下代码并单击doSomething,则会转到void doSomething方法。使用它只是对当前实例的引用。有关此http://www.boost.org/doc/libs/1_35_0/libs/serialization/doc/class_diagram.html

的详细信息,请参阅
public class Something{

    public void doSomething(){
         System.out.println("Something is done");
    }

    public Something(){
    //what object is this being called on?
       this.doSomething();
    }

    public static void main(String[] args){
        Something foo = new Something();
    }
}