Heim >Java >javaLernprogramm >Warum erhalte ich in Java die Fehlermeldungen „Kann keine statische Referenz auf nicht-statisches Feld erstellen' und „Kann keine statische Referenz auf nicht-statische Methode erstellen'?

Warum erhalte ich in Java die Fehlermeldungen „Kann keine statische Referenz auf nicht-statisches Feld erstellen' und „Kann keine statische Referenz auf nicht-statische Methode erstellen'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 00:32:02334Durchsuche

Why Do I Get

JAVA: Verständnis der Fehler „Statische Referenz kann nicht auf nichtstatisches Feld erstellt werden“ und „Statische Referenz kann nicht auf nichtstatische Methode erstellt werden“

Java-Programmierung beinhaltet häufig die Manipulation von Feldern und Methoden, die entweder statisch oder nicht statisch sind. Das Verständnis des Unterschieds zwischen den beiden kann entscheidend sein, um häufige Fehler zu vermeiden.

Statisch vs. nichtstatisch

Statische Felder und Methoden sind eher mit der Klasse selbst verknüpft als mit einem bestimmten Objekt der Klasse. Sie können direkt über den Klassennamen aufgerufen werden, ohne dass ein Objekt erstellt werden muss. Im Gegensatz dazu sind nicht statische Felder und Methoden instanzspezifisch und erfordern die Verwendung eines Objekts der Klasse.

Fehler „Statischer Verweis auf nichtstatisches Feld/Methode kann nicht erstellt werden“

Dieser Fehler tritt auf, wenn Sie versuchen, aus einem statischen Kontext heraus auf ein nicht statisches Feld oder eine nicht statische Methode zuzugreifen, beispielsweise aus einer statischen Methode oder aus der Klassendeklaration selbst heraus. Um diesen Fehler zu beheben, können Sie das Feld oder die Methode als statisch deklarieren oder eine Instanz der Klasse erstellen und über die Objektinstanz auf die nicht statischen Mitglieder zugreifen.

Im von Ihnen bereitgestellten Beispielcode:

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        r = 5; // Error: Cannot access non-static field 'r' from static method 'main'
        // ...
    }
}</code>

Sie haben versucht, direkt über die statische Hauptmethode auf das nicht-statische Feld r zuzugreifen, was den Fehler verursacht hat. Der richtige Ansatz besteht darin, eine Instanz der Cerchio-Klasse zu erstellen und über das Objekt auf r zuzugreifen, wie unten gezeigt:

<code class="java">public class Cerchio {
    float r; // non-static field
    float area; // non-static field
    float cfr; // non-static field
    
    public static void main(String[] args) {
        Cerchio cerchio = new Cerchio();
        cerchio.r = 5; // OK: Accessing non-static field through an object
        // ...
    }
}</code>

Durch die Einhaltung dieser Regeln können Sie die Meldung „Statischer Verweis auf Nicht-Objekte kann nicht erstellt werden“ vermeiden. Statische Feld-/Methodenfehler und schreiben Sie saubereren, robusteren Java-Code.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Java die Fehlermeldungen „Kann keine statische Referenz auf nicht-statisches Feld erstellen' und „Kann keine statische Referenz auf nicht-statische Methode erstellen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn