static in Java Methoden?

... komplette Frage anzeigen

3 Antworten

wenn sie von den Objekten der Klasse unabhängig ist, aber hauptsächlich von diesen verwendet wird.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DAUUSER
05.04.2016, 18:59

Gibt es einen Fall in dem es unabdingbar ist static zuverwenden ?

1

Immer dann wenn innerhalb der Methode weder auf nicht statische Member variablen und auch nicht auf nicht statische Methoden derselben Klasse zugegriffen wird.
Eclipse erkennt das auch automatisch und schlägt dann vor die jeweilige Methode in eine static-Methode umzuwandeln

Wenn man irgendwelche Funktionen (im mathematischen Sinne) definiert sind diese eigentlich immer static

Wenn Du dir die Klasse Math anschaust findest Du jede Menge statische und "mathematische" Funktionen wie sin(a) oder min(a,b)  die  als static definiert sind

static macht auch Sinn wenn man eine Methode haben möchte die ein Objekt der entsprechenden Klasse erstellt aber diese nicht als Constructor definieren möchte.

z.B.    static FTPServer createFTPServerFromConfigString(String configuration){.....}

Die Methode erstellt einen FTPServer auf Basis der Angaben die im String configuration hinterlegt sind.

Ist diese String nicht vernünftig auswertbar weil z.B. notwendige Angaben fehlen dann könnte createFTPServerFromConfig() als Ergebnis null liefern - 

während ein Constructor das nicht kann sondern immer ein Objekt der jeweiligen Klasse zurückliefert

Man solle es aber mit static auch nicht übertreiben - wenn der Großteil aller Methoden static ist dann hat man vermutlich mehr "prozedural" programmiert als objektorientiert.

Antwort bewerten Vielen Dank für Deine Bewertung

Z.b  bei einer FactoryMethode wenn Instanzen der Klasse nicht über einen öffentlichen Konstruktor erzeugt werden sollen.

Oder wenn z.B. die Anzahl der erzeugten Instanzen speichern willst.

Sind nur 2 von vielen Anwendungen

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Gastnr007
05.04.2016, 19:09

für den Fragesteller auf die Frageerweiterung für den unabdingbaren Fall:
für die Anzahl der erzeugten Instanzen brauche ich hier keine static Methode :) - da reicht ein static integer und eine lokale Funktion :)
und Factory ist nur ein Modell, das auch umgehbar ist (wenn denn der Programmierboss oder die Bibliothek nicht etwas anderes vorgibt)

1

Was möchtest Du wissen?