2016-03-30 15 views
-2

申し訳ありません。だから、私は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(); 
    } 
} 

ご協力いただきましてありがとうございます。

+2

はい。 http://stackoverflow.com/questions/3728062/what-is-the-meaning-of-this-in-javaの詳細を確認してください。 – sdfacre

答えて

0

これはどのオブジェクトが呼び出されていますか?

this参照あるコンストラクタの範囲において、fooに割り当てされようとしている参照。そして、はい、(この文脈中)doSomething();this.doSomething();

と等価である私たちは、

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

、その後呼び出し、SomethingUUIDを追加する(とdoSomethingでそれを表示する)ことによって、このような場合は見ることができますdoSomething()

public static void main(String[] args) { 
    Something foo = new Something(); 
    foo.doSomething(); 
} 
ようmainで再び

あなたは同じUUIDを2回取得します。

0

はい、doSomethingはSomethingクラス内で定義されています。したがって、this.doSomething()と同じです。クラスの外から(「Something」クラス内で宣言された)doSomething()を呼び出すために

、あなたはそうのようにそれを呼び出す必要があります:

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

はい。 this.doSomethingを呼び出すことはdoSomething()を呼び出すことと同じです。どのGUIが使用しているかわからないたとえば、Eclipseを使用していて、以下のコードがあり、doSomethingをクリックすると、void doSomethingメソッドが表示されます。これを使用するのは、現在のインスタンスへの参照に過ぎません。これに関する詳細はこちらhttp://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.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(); 
    } 
} 
関連する問題