Statische Methoden sind nützlich, wenn Sie nur eine Instanz (Situation Umstand), wohin du gehst, die Methode verwenden und Sie benötigen keine Mehrfachkopien (Objekte). Wenn Sie beispielsweise eine Methode schreiben, die sich auf nur einer Website anmeldet, die Wetterdaten herunterlädt und dann die Werte zurückgibt, könnten Sie sie als statisch schreiben, da Sie alle erforderlichen Daten innerhalb der Methode fest codieren können Du wirst nicht mehrere Instanzen oder Kopien haben. Anschließend können Sie die Methode statisch ein mit Zugriff auf die folgenden Möglichkeiten:
MyClass.myMethod();
this.myMethod();
myMethod();
Nicht-statische Methoden verwendet werden, wenn Sie vorhaben, Ihre Methode zu verwenden, um mehrere Kopien zu erstellen. Wenn Sie beispielsweise die Wetterdaten von Boston, Miami und Los Angeles herunterladen möchten und dies von Ihrer Methode aus tun können, ohne den Code für jeden einzelnen Standort individuell anpassen zu müssen, greifen Sie auf die Methode nicht statisch zu :
MyClass boston = new MyClassConstructor();
boston.myMethod("bostonURL");
MyClass miami = new MyClassConstructor();
miami.myMethod("miamiURL");
MyClass losAngeles = new MyClassConstructor();
losAngeles.myMethod("losAngelesURL");
In dem obigen Beispiel erzeugt Java drei separate Objekte und Speicherstellen aus der gleichen Methode, die Sie mit dem „boston“ einzeln zugreifen können, „Miami“ oder „losangeles“ Referenz. Sie können statisch auf keines der oben genannten Objekte zugreifen, da MyClass.myMethod(); ist ein generischer Verweis auf die Methode, nicht auf die einzelnen Objekte, die die nicht statische Referenz erstellt hat.
Wenn Sie in eine Situation geraten, in der die Art und Weise, wie Sie auf jeden Ort zugreifen, oder die Art, wie die Daten zurückgegeben werden, so unterschiedlich ist, dass Sie keine Einheitsgröße schreiben können, ohne durch viele Ringe zu springen Sie können Ihr Ziel besser erreichen, indem Sie drei separate statische Methoden schreiben, eine für jeden Standort.
Beeinflusst Access specifier (public) den Zugriff auf statische Methoden? Wie wird geschehen, wenn Ihr Methodenname statische Zeichenfolge method1() sein wird? –
Wäre es auch möglich, diese statische Methode in eine UtililyClass zu übertragen? – karlihnos