Der häufigste Anfängerfehler besteht darin, dass Sie versuchen, eine Klasseneigenschaft statisch zu verwenden, ohne eine Instanz dieser Klasse zu erstellen. Sie erhalten dann die erwähnte Fehlermeldung:
Sie können entweder die nicht statische Methode statisch machen oder eine Instanz dieser Klasse erstellen, um ihre Eigenschaften zu verwenden.
Warum? Ich frage nicht nach Lösungen. Ich wäre dankbar zu wissen, was der Grund dafür ist. Der eigentliche Grund!
private java.util.List<String> someMethod(){
/* Some Code */
return someList;
}
public static void main(String[] strArgs){
// The following statement causes the error. You know why..
java.util.List<String> someList = someMethod();
}
Sie können nicht etwas aufrufen, das nicht existiert. Da Sie kein Objekt erstellt haben, existiert die nicht-statische Methode noch nicht. Eine statische Methode existiert (per Definition) immer.
Die Methode, die Sie aufrufen wollen, ist eine Methode auf Instanzebene; Sie haben keine Instanz.
Statische" Methoden gehören zur Klasse, nicht-statische" Methoden gehören zu Instanzen der Klasse.
Eine statische Methode bezieht eine Aktion auf einen Objekttyp, während die nicht statische Methode eine Aktion auf eine Instanz dieses Objekttyps bezieht. In der Regel handelt es sich um eine Methode, die etwas in Bezug auf die Instanz tut.
Beispiel:
Die Klasse Auto könnte eine Waschmethode haben, die das Waschen eines bestimmten Autos anzeigt, während eine statische Methode für den Typ Auto gelten würde.