Fehler: Die Anzahl nicht statischer Variablen kann nicht von einem statischen Kontext in Java referenziert werden
Dieses Tutorial demonstriert den Fehler: Anzahl der nicht statischen Variablen kann nicht aus einem statischen Kontext referenziert werden
in Java.
der Fehler: Anzahl nicht statischer Variablen kann nicht von einem statischen Kontext aus referenziert werden
in Java
Meistens tritt der Fehler: Anzahl der nicht statischen Variablen kann nicht aus einem statischen Kontext referenziert werden
auf, wenn wir versuchen, eine nicht statische Elementvariable in der Hauptmethode zu verwenden, da die Methode main()
statisch ist und ist automatisch aufgerufen. Wir müssen kein Objekt erstellen, um die Methode main()
aufzurufen.
Um den Fehler: Anzahl der nicht statischen Variablen kann nicht aus einem statischen Kontext referenziert werden
zu verstehen, müssen wir zuerst das Konzept der statischen und nicht statischen Methoden verstehen.
Statische Methoden
Die statischen Methoden gehören zu einer Klasse, aber nicht zur Instanz dieser Klasse. Die statische Methode wird ohne die Instanz oder das Objekt der Klasse aufgerufen.
Die statischen Methoden können nur auf die statischen Variablen und andere Mitglieder der statischen Methoden ihrer Klasse und anderer Klassen zugreifen. Die statischen Methoden können nicht auf die nicht statischen Mitglieder einer Klasse zugreifen.
Nicht statische Methoden
Jede Methode, die kein Static
-Schlüsselwort enthält, ist eine nicht-statische Methode. Die nicht statischen Methoden können auf die statischen und nicht statischen Variablen und Mitglieder derselben Klasse oder einer anderen Klasse zugreifen.
Die nicht statischen Methoden können auch den Wert statischer Daten ändern.
Beispiel für statische und nicht statische Methoden in Java
Lassen Sie uns ein Beispiel ausprobieren, um statische und nicht statische Methoden zu demonstrieren.
package delftstack;
class DelftstackDemo {
// non-static variable
int Demo;
// Static method
public static void increment() {
// Using a Non-Static Variable in Static Method. Error
Demo++;
}
}
public class Example {
// Static Main method
public static void main(String args[]) {
DelftstackDemo Demo1 = new DelftstackDemo();
DelftstackDemo Demo2 = new DelftstackDemo();
DelftstackDemo Demo3 = new DelftstackDemo();
Demo1.Demo = 7;
Demo2.Demo = 8;
Demo3.Demo = 9;
// Calling the method
DelftstackDemo.increment();
System.out.println(Demo1.Demo);
System.out.println(Demo2.Demo);
System.out.println(Demo3.Demo);
}
}
Der obige Code hat zwei Klassen. In der ersten Klasse verwendet der Code eine nicht statische Elementvariable in einer statischen Methode, und die zweite Klasse versucht, die Werte des nicht statischen Elements aus der Instanz in der Hauptmethode zu ändern.
Der Code wird einen Fehler auslösen.
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot make a static reference to the non-static field Demo
at delftstack.DelftstackDemo.increment(Example.java:12)
at delftstack.Example.main(Example.java:29)
Der obige Code löst den Fehler aus, weil in der statischen Methode ein nicht statisches Mitglied Demo
verwendet wird. Das Ändern der Methode inkrementieren
in nicht statisch und das Aufrufen mit der ersten Klasseninstanz löst das Problem.
Siehe Lösung:
package delftstack;
class DelftstackDemo {
// non-static variable
int Demo;
// change to a non-static method
public void increment() {
// No error
Demo++;
}
}
public class Example {
// Static Main method
public static void main(String args[]) {
DelftstackDemo Demo1 = new DelftstackDemo();
DelftstackDemo Demo2 = new DelftstackDemo();
DelftstackDemo Demo3 = new DelftstackDemo();
Demo1.Demo = 7;
Demo2.Demo = 8;
Demo3.Demo = 9;
// Calling the method
Demo1.increment();
System.out.println(Demo1.Demo);
System.out.println(Demo2.Demo);
System.out.println(Demo3.Demo);
}
}
Jetzt verwenden wir ein nicht-statisches Mitglied in der nicht-statischen Methode und rufen eine nicht-statische Methode in der Haupt-Statik durch die Instanz der ersten Klasse auf. Es löst das Problem.
Siehe Ausgabe:
8
8
9
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse