2016-03-30 10 views
-2

Alles klar, also bin ich neu in Java und habe eine schnelle Frage für jeden, der nett genug wäre, es zu beantworten.Wie wird diese Java-Methode aufgerufen?

Welches Objekt ist diese doSomething-Methode aufgerufen? Ist es das Gleiche wie das Aufrufen von 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(); 
    } 
} 

Jede Hilfe wird geschätzt!

+2

ja. Überprüfen Sie mehr Details auf http://stackoverflow.com/questions/3728062/what-is-the-meaning-of-this-in-java – sdfacre

Antwort

0

Welches Objekt wird aufgerufen?

Die Referenz, die es ist die thisReferenz in dem Umfang des Konstruktors foo, zugewiesen werden wird. Und ja, doSomething(); (in diesem Kontext) entsprechen this.doSomething();

Wir können sehen, in diesem Fall durch eine Zugabe von UUID zu Something (und es in doSomething Anzeigen),

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

und dann Aufruf doSomething()wieder in main wie

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

Und Sie erhalten zweimal die gleiche UUID.

0

Ja, doSomething ist in der Something-Klasse definiert. Daher ist das das Gleiche wie this.doSomething().

die doSomething() (innerhalb "Something" Klasse deklariert) zu nennen, von außerhalb der Klasse, müssten Sie es nennen wie so:

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

Ja. Das Aufrufen von this.doSomething ist dasselbe wie das Aufrufen von doSomething(). Nicht sicher, welche GUI benutzt wird. Wenn Sie zum Beispiel Eclipse verwenden und den unten stehenden Code haben und auf etwas tun klicken, gelangen Sie zur void doSomething-Methode. Dies ist nur ein Verweis auf die aktuelle Instanz. Weitere Details finden Sie in Bezug auf diese 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(); 
    } 
} 
Verwandte Themen