Nicht-statische Feldreferenz im statischen Kontext
In Java können statische Methoden nicht direkt auf nicht-statische Felder zugreifen. Dieser Fehler tritt normalerweise auf, wenn versucht wird, über eine statische Methode auf eine Instanzvariable zuzugreifen.
Das Problem verstehen
Im angegebenen Code tritt der Fehler in der Hauptmethode auf:
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
Hier ist die Methode „draw()“ statisch, sie versucht jedoch, auf den nicht statischen Feldsaldo zuzugreifen. Da die Hauptmethode statisch ist, kann sie nicht auf Instanzvariablen wie Balance verweisen.
Lösung
Um diesen Fehler zu beheben, machen Sie entweder die Methode nicht statisch oder das Feld statisch.
Option 1: Machen Sie die Auszahlungsmethode nicht statisch
Ändern Sie die Methode „draw()“ in:
<code class="java">public void withdraw(double withdrawAmount) { balance -= withdrawAmount; }</code>
Nun, die Methode kann auf das Saldenfeld zugreifen, da es nicht statisch ist.
Option 2: Machen Sie das Saldenfeld statisch
Alternativ machen Sie das Saldenfeld statisch:
<code class="java">private static double balance = 0;</code>
Jetzt kann auf das Saldofeld aus statischen Kontexten wie der Hauptmethode zugegriffen werden:
<code class="java">Account account = new Account(1122, 20000, 4.5); account.withdraw(balance, 2500);</code>
Das obige ist der detaillierte Inhalt vonWarum kann ich in Java nicht über eine statische Methode auf ein nicht statisches Feld zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!