it-swarm.com.de

this: Kann nicht im statischen Kontext verwendet werden

Können Sie mir bitte mit dem folgenden Code helfen? Der Fehler ist: "Dies kann nicht in einem statischen Kontext verwendet werden"

public class Sample2 {
    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        Sample2 sam=new Sample2();  

        //Below code works fine
        System.out.println(sam);

        //Below code is displaying error
        System.out.println(this);
    }
}
16
Cyborgz

Das Schlüsselwort "this" bezieht sich auf das aktuelle Objekt, aufgrund dessen die Methode ausgeführt wird. Sie können keine statische Methode mit einer Instanz der Klasse aufrufen. Aus diesem Grund kann "this" im obigen Beispiel nicht in einer statischen Methode verwendet werden, da versucht wird, die aktuelle Instanz zu drucken, die überhaupt nicht erstellt wurde. Ich denke, das ist der Grund, warum es einen Fehler beim Kompilieren gibt.

26

Das Schlüsselwort this bezieht sich auf die Instanz der Klasse. In einem statischen Kontext haben Sie keine Instanz, daher können Sie sie nicht referenzieren.

Weitere Informationen finden Sie in dieser Antwort: Was bedeutet "dies" in Java?

17
Matten

In Java können Sie dies nicht in statischen Methoden (statischer Kontext) verwenden.

Static-Methoden zeigen nicht auf eine Instanz der umgebenden Klasse.

Eine statische Methode kann sich ohnehin nicht auf "dieses" oder "super" Schlüsselwort beziehen

Siehe offizielle Dokumente zu diesem Schlüsselwort

2
Suresh Atta

Wenn wir versuchen, aus einem statischen Kontext darauf zuzugreifen, hat der Compiler keine Möglichkeit zu erraten, auf welche Instanz Sie sich beziehen. main ist hier eine statische Methode.

2
Vivek Vermani

dies bedeutet, dass wir im statischen Kontext die Adresse des Objekts zurückgeben. Obwohl es absolut legal ist, ein Objekt statische Methoden aufzurufen, ist dies jedoch keine Verpflichtung. Der Compiler stoppt also die Möglichkeit eines Fehlers, falls für die Klasse kein Objekt erstellt wird. 

0
Jain