Statische Methoden in Interfaces?

Status
Nicht offen für weitere Antworten.
J

jago

Gast
Hi,

wir wissen alle, dass statische Methoden in Interfaces nicht erlaubt sind. Aber warum spricht eigentlich was dagegen, dass man eine Gruppe von Klassen ein solches Interface implementieren laesst und dann davon ausgehen kann, dass die gewuenschte Statische Methode existuert. Haette das irgendwelche Nebeneffekte?

Danke,
jago
 
J

jago

Gast
maki hat gesagt.:
statische Methoden in Interfaces?
Sinnfrei!

Naja...bisher muss ich immer erst eine Instanz einer Klasse haben um eine Methode zu nutzen. Wenn diese Methode statisch waere saehe es anderst aus. Oft ist es aber schwierig so eine Instanz zu generieren oder es macht auch keinen Sinn, da es sich um unterschiedliche Factory Klassen handelt meiner Vorstellung nach alle das gleiche Set an statischen Methoden implementieren soll - klar koennte man das auch mit normalen Interface-Methoden loesen wenn die Factory-Klassen alle Singletons sind...uuupps...aber die getInstance() Methode des Singletons muss ja immer statisch sein :(

Waer also noch ein weiterer Nutzen fuer statische Methoden in Singletons - ich koenne also ein
Interface Singleton<T> erstellen mit
T getInterface()
Und dann class SingletonKlasse implements Singleton<SingletonKlasse>

...statische Methoden in Interfaces sehe ich also doch als sinnvoll an.



Belehr mich gerne eines Besseren aber bitte mit einer ordentlichen Argumenten, nicht indem man die akzeptierte Meinung statische Methoden == sinnfrei nachbetet.
 
M

maki

Gast
Wenn du mehr als ein einziges Singleton in deiner Anwendung hast, machst du etwas falsch, nämlich das Design ;)
Mach dir doch eine Registry, oder nutze ein DI Framework, wie zB. SPring, oder manuell ohne Framework per setter/Contructor injection.

Abgesehen davon das Interfaces etwas mit Vererbung und Polymorphie zu tun haben und static eben genau das nicht kann/unmöglich macht, ist static in Interfaces voll daneben ;)
 
G

Guest

Gast
maki hat gesagt.:
Wenn du mehr als ein einziges Singleton in deiner Anwendung hast, machst du etwas falsch, nämlich das Design ;)
Mach dir doch eine Registry, oder nutze ein DI Framework, wie zB. SPring, oder manuell ohne Framework per setter/Contructor injection.

Abgesehen davon das Interfaces etwas mit Vererbung und Polymorphie zu tun haben und static eben genau das nicht kann/unmöglich macht, ist static in Interfaces voll daneben ;)

Was? Man kann sehr wohl mehrere Klassen die Singletons sind in einer Anwendung haben. Hast du eigentlich implizit in jeder Anwendung, da Java intern mehrere Singleton-Klassen nutzt. Aber das war ja auch nur ein Beispiel und dein Spring Rat macht gar keinen Sinn.

Es geht darum, mehreren Klassen eine gemeinsame statische Schnittstelle zu verpassen. Interfaces etwas mit Vererbung und Polymorphie zu tun aber das heisst ja nicht dass man es dabei belassen muss. Wenn man das durch statische Interfaces erweitert koennten Interfaces eine zusaetzliche Bandbreite von neuen Funktionen abdecken.
 
G

Guest

Gast
Und ja man bricht hier nicht mit der Objektorientierung!

Man erhaelt das Class-Objekt eines Typs! Alle Class-Objekte diesen Typs, also auch alle Class-Objekte von abgeleiteten Klassen wuerden dann diese statische Methode implementieren.
 
S

SlaterB

Gast
Klassen werden nicht dynamisch angesprochen,

durch die Vorgabe in Interfacen könntest du vielleicht dafür sorgen, dass Klasse X eine statische Operation y braucht, und sonst der Compiler meckert,
aber welchen Nachteil hast du, wenn das nicht passiert?

die einzige Möglichkeit, auf diese Operation y zuzugreifen, ist explizit
X.y(); im Quellcode zu schreiben,
und du diesem Zeitpunkt merkt man dann, dass die Operation fehlt und ergänzt sie,

sinnlose Features werden nicht eingebaut,
diese neue Bandbreite hat bisher noch niemand gebraucht, bedeutet dir diese Erkenntnis nichts?
irgendwann ist auch gut und man kann das Thema ruhen lassen

> also auch alle Class-Objekte von abgeleiteten Klassen

nun bewegst du dich aber endgültig von der Realität weg,
Klassen sind nun mal extra keine Objekte, damit es keine Objekte sind,

du kannst nicht Klassen von Objekten selber wieder zu Objekten machen..
 

BjörnBu

Aktives Mitglied
Wie ist das denn gemeint? Mir würden zwei Arten einfallen, wie es gemeint sein könnte.

Fall 1 das interface definiert die statische methode nur und jede Klasse implementiert sie anderes -> sinnfrei. Wie sollte sich <Interface>.<methode>() verhalten?

Fall2 das interface implementiert die Methode schon vollständig und sie soll den Klassen zur Verfügung stehen. Genau an diesem Punkt sollte das Interface eine abstrakte Klasse sein. Ein Interface ist ja eine Schnittstelle und bringt an sich erstmal keine Funktionalität mit.

Außerdem: Spinnt man den Gedanken weiter kommt man an genau die Probleme, die man mit Mehrfachvererbung hätte... Wie verhält sich eine Klasse die zwei interfaces implementiert, die eine Methode mit gleicher Signatur unterschiedlich implementieren?

Beide Fälle machen meiner Meinung nach keinen Sinn. Hast du es also anders gemeint?
 
G

Guest

Gast
Anonymous hat gesagt.:
Was? Man kann sehr wohl mehrere Klassen die Singletons sind in einer Anwendung haben.

Man kann seine Anwendung auch komplett aus Singletons bauen, nur hat das dann wenig mit Objektorientierung und Design zu tun. Deswegen sowenig wie möglich Singletons aber am besten gar keine.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
S statische Methoden und Vererbung Allgemeine Java-Themen 6
M Wann Membermethoden, wann statische Utility-Methoden? Allgemeine Java-Themen 24
S Statische Methoden in abstrakte Klassen deklarieren? Allgemeine Java-Themen 17
G Wann statische Methoden, statische Attributen? Allgemeine Java-Themen 7
G Statische Methoden erzwingen Allgemeine Java-Themen 2
temi Private statische Hilfsmethoden Allgemeine Java-Themen 33
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
M Zeiger auf statische Variable Allgemeine Java-Themen 1
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
C Classloading und statische Variablen Allgemeine Java-Themen 2
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
J Statische Variablen, Threadübergreifend. Allgemeine Java-Themen 4
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
N Klasse rausfinden, an der eine statische Methode aufgerufen wurde ? Allgemeine Java-Themen 10
R statische initialisierer Allgemeine Java-Themen 7
M Zwingen eine statische Methode zu importieren Allgemeine Java-Themen 5
heart_disease Designfrage: Statische Konfigurationsklasse Allgemeine Java-Themen 10
S statische Interfaces..? Allgemeine Java-Themen 6
S Innere Klassen und die statische Methode access$x Allgemeine Java-Themen 5
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
F Statische Methode in abstrakter Superklasse definieren Allgemeine Java-Themen 4
B Statische Methode? Komisch. Allgemeine Java-Themen 5
H Zugriff auf statische Variable synchronisieren Allgemeine Java-Themen 4
A [SOLVED] Classpath und statische Variablen Allgemeine Java-Themen 6
S Tiefe Kopie einer Baumstruktur als statische Methode Allgemeine Java-Themen 8
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
M statische regex und vergleiche oder immer wieder compilen Allgemeine Java-Themen 2
S Statische Methode oder nicht? Allgemeine Java-Themen 5
T in einer statischen Methode ein nicht statische Aufrufen Allgemeine Java-Themen 5
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
H Zugriff auf statische Methode durch mehrere User Allgemeine Java-Themen 19
S Auf statische Funktionen mit Java Reflections zugreifen Allgemeine Java-Themen 3
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
S Methoden Frage Allgemeine Java-Themen 2
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben