Heim  >  Artikel  >  Java  >  Warum erhalte ich in Java die Meldung „Es kann kein statischer Verweis auf ein nicht statisches Feld/eine nicht statische Methode erstellt werden“?

Warum erhalte ich in Java die Meldung „Es kann kein statischer Verweis auf ein nicht statisches Feld/eine nicht statische Methode erstellt werden“?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 08:07:27366Durchsuche

Why am I getting

Informationen zu „Ein statischer Verweis auf ein nichtstatisches Feld/eine nicht-statische Methode kann nicht erstellt werden“ in Java

In Java tritt der Fehler „Kann nicht hergestellt werden“ auf „Ein statischer Verweis auf das nicht-statische Feld“ oder „Ein statischer Verweis auf die nicht-statische Methode kann nicht erstellt werden“ weist darauf hin, dass bestimmte Aktionen aufgrund der Interaktion zwischen statischen und nicht-statischen Elementen in Ihrem Code eingeschränkt sind.

Fehlerursache

Dieser Fehler tritt auf, wenn Sie versuchen, auf (nicht statische) Instanzfelder oder -methoden in einem statischen Kontext zuzugreifen, beispielsweise innerhalb einer statischen Methode. Instanzvariablen sind bestimmten Objekten einer Klasse zugeordnet, während statische Variablen und Methoden zur Klasse selbst gehören und keine Objektinstanzen erfordern.

Lösung: Erstellen Sie eine Instanz

Um den Fehler zu beheben, müssen Sie eine Instanz der Klasse erstellen, bevor Sie auf Instanzvariablen zugreifen oder Instanzmethoden aufrufen. Dies liegt daran, dass auf die Instanzvariablen und -methoden nicht direkt aus einem statischen Kontext zugegriffen werden kann.

Im bereitgestellten Codeausschnitt versucht beispielsweise die statische Methode main, auch auf die Instanzvariablen r, cfr und area zuzugreifen als Instanzmethoden c_cfr und c_area. Um dies zu beheben, erstellen Sie eine Instanz der Cerchio-Klasse innerhalb der Hauptmethode und greifen Sie dann über die Objektreferenz auf die Instanzvariablen und -methoden zu:

<code class="java">public static void main(String[] args) {
    Cerchio cerchio = new Cerchio();
    cerchio.r = 5;
    cerchio.c_cfr();
    cerchio.c_area();
    System.out.println("The cir is: " + cerchio.cfr);
    System.out.println("The area is: " + cerchio.area);
}</code>

Zusätzliche Hinweise

  • Instanzvariablen sollten im Allgemeinen als privat deklariert werden und zur Kapselung über Getter- und Setter-Methoden aufgerufen werden.
  • Vermeiden Sie den direkten Zugriff auf Klassenvariablen; Verwenden Sie stattdessen Klassenkonstanten oder statische Methoden, um darauf zuzugreifen.
  • Die richtige Einrückung und Codeorganisation kann die Lesbarkeit verbessern und solche Fehler in Zukunft verhindern.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Java die Meldung „Es kann kein statischer Verweis auf ein nicht statisches Feld/eine nicht statische Methode erstellt werden“?. 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