Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen?

sirbender

Top Contributor
Ich gebe mal ein konkretes Beispiel: commons-collections4-4.4-sources

https://commons.apache.org/proper/commons-collections/download_collections

Java:
OrderedMap<String, String> map = new LinkedMap<>();
map.put("FIVE", "5");

OrderedMap ist ein Interface, dass das Put und java.util.Map Interface erweitert.

Map: V put(K key, V value)
Put: Object put(K key, V value)

LinkedMap leitet sich von AbstractHashedMap ab, welches V put(K key, V value) implementiert.

Was passiert dadurch? AbstractHashedMap ueberschreibt (laut Eclipse) damit Map.put und nicht Put.put. Wie wird das von Eclipse entschieden? Oder ueberschreibt das put in AbstractHashedMap BEIDE put in den jeweiligen Interfaces?

Und warum ist dann das Interface Put ueberhaupt da?
 

mihe7

Top Contributor
Der Trick bei Interfaces ist ja, dass es keine Implementierung gibt. Ergo wird auch nichts überschrieben oder aufgerufen. Die Implementierung eines Interfaces sagt nur, dass das Objekt die betreffenden Methoden anbietet.
 

mihe7

Top Contributor
Das steht doch in der Doku zu Put: The "write" subset of the Map interface. Sprich: die haben das Map-Interface aufgeteilt - zu welchem Zweck auch immer...
 

sirbender

Top Contributor
Vielleicht geht es auch nur darum, dass man nur das Get-Interface z.B. als Rueckgabewert einer Methode definiert. So muss man dann keine Kopie einer Map zurueckgeben wenn man nicht will, dass neue Werte hinzugefuegt werden koennen.
 

Meniskusschaden

Top Contributor
Wenn man einen ROWM-Speicher (read once write multiple) mit zerstörendem Lesezugriff realisieren will, wäre ja ein Writer sinnvoll, der nicht in der Lage ist, den Datenbestand beispielsweise durch Kontrolllesungen wieder kapput zu machen.;)
 

Meniskusschaden

Top Contributor
Nein, nicht dass ich wüsste.;)
Wozu braucht man das?
Vielleicht zum Speichern von unnützem Zeug, das niemand braucht und automatisch verschwinden soll, wenn der Revisor es gesehen hat.;)

Ich finde deine Erklärung:
Oder man hat einfach das Interface-Segregation-Prinzip konsequent umsetzen wollen.
und das Anwendungsbeispiel von @LimDul
Vielleicht möchte ich eine Netzwerkschnittstelle als Map präsentieren und da kann ich nur schreiben und nicht lesen.
am überzeugendsten.
 

sirbender

Top Contributor
Vielleicht kann man die Existenz des Put Interfaces auch so erklaeren, dass man es nutzt wenn auf die Map nicht 'concurrently' zugegriffen werden soll. Wenn ein Thread Werte der Map hinzufuegt und ein anderer durch die Map lesend iterieren koennte, hast du vielleicht eine ConcurrentModificationException.
So richtig macht das aber auch keinen Sinn, oder?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
Viper13125 Eclipse Hängt sich auf, wenn ich SimpelDateFormat drin lasse Allgemeine Java-Themen 2
M Probleme bei Eclipse wenn ich entpacke Allgemeine Java-Themen 15
P Summieren wenn Allgemeine Java-Themen 4
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
E JavaFX RMI extrem langsam wenn Server nicht läuft Allgemeine Java-Themen 5
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
S Wenn mehr als die Hälfte Großgeschrieben ist. Allgemeine Java-Themen 2
D mouseWheelMoved => erst reagieren, wenn für 1s das Mausrad nicht mehr benutzt wurde Allgemeine Java-Themen 4
L SetBounds wird vor dem Konstruktorcode aufgerufen - Wenn Startleiste links Allgemeine Java-Themen 1
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
DStrohma Input/Output KeyEvent nur verarbeiten wenn es ein "sichtbares" Zeichen ist? Allgemeine Java-Themen 1
S ExecutorService.invokeAll -- was passiert wenn einige Tasks schon ausgefuehrt wurden? Allgemeine Java-Themen 2
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
D Java Skript Wenn Dann in PDF Formular Allgemeine Java-Themen 2
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
L Input/Output Dateien erstellen, wenn ein JAR ausgeführt wird Allgemeine Java-Themen 13
S Strings gehen "kaputt" wenn ich in CVS ein und wieder auschecke. Allgemeine Java-Themen 2
E externen Prozess schließen, wenn Programm geschlossen wird Allgemeine Java-Themen 2
D mvc-Modell: wenn views voneinander wissen sollen Allgemeine Java-Themen 13
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
B Benachrichtigung, wenn sich Benutzer am Betriebssystem anmeldet Allgemeine Java-Themen 9
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
N OutOfMemory nur wenn -Xmx gesetzt ist?! Allgemeine Java-Themen 6
Y Erfassen der Gesamtbreite, wenn 2 Bildschirme zur Verfügung. Allgemeine Java-Themen 3
V Was tun, wenn close() fehlschlägt? Allgemeine Java-Themen 3
G Was ist Ant und warum soll ich das brachen, wenn es IDEs gib Allgemeine Java-Themen 10
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G Aufruf einer Methode wenn Klasse noch nicht existiert Allgemeine Java-Themen 3
K FarbeA die moeglichst sichtbar ist wenn gezeichnetauf FarbeB Allgemeine Java-Themen 7
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
ARadauer mit keylistener hören auch wenn frame nicht den focus hat Allgemeine Java-Themen 2
S Zweiten Thread erst starten wenn erster Thread beendet ist ? Allgemeine Java-Themen 6
B Datei erst öffnen, wenn EOF gesetzt ? Allgemeine Java-Themen 4
M PostgreSQL - nennenswerte Vorteile und wenn ja, wo? Allgemeine Java-Themen 3
P JTextField textfarbe schwarz auch wenn JTF deaktiviert ist Allgemeine Java-Themen 4
C Wenn long int zu klein Allgemeine Java-Themen 17
F CPU auslastung wenn Speicher mit -Xmx erhöht Allgemeine Java-Themen 4
M Wenn immer nur einer darf . Allgemeine Java-Themen 3
P Ist das möglich mit Java - wenn Nein wie sonst? Allgemeine Java-Themen 8
R Wenn Variable = wat ist Allgemeine Java-Themen 7
J RegEx: "wenn zeichen folgen ersetze x mit y, sonst mit Allgemeine Java-Themen 2
F Wenn ihr Performance wollt nehmt C++ Allgemeine Java-Themen 39
L Wenn String matches [-.,;:_°&] dann. Allgemeine Java-Themen 5
I JMF - feststellen wenn mp3 aus Allgemeine Java-Themen 10
G Prozess beenden, wenn er hängt Allgemeine Java-Themen 9
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
G wenn ohne Interface Allgemeine Java-Themen 2
K Wenn events auftritt fireActionPerformed Allgemeine Java-Themen 6
T ^Wenn Java startet wird das Bild unscharf Allgemeine Java-Themen 8
G Wenn JAVA Applet nicht geladen werden kann -> Flash Allgemeine Java-Themen 4
B Rechner stürzt ab wenn Java-Anwendungen geöffnet werden! Allgemeine Java-Themen 2
N Wenn Bild nicht vorhanden, dann Weiterleitung Allgemeine Java-Themen 5
G Auf KeyEvent reagieren, wenn das Fenster nicht aktiv ist Allgemeine Java-Themen 8
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
T Eine Frage des Designs Allgemeine Java-Themen 2
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
H Eine Linie verkürzen Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
berserkerdq2 Wie mache ich in IJVM eine if verzweigung? Allgemeine Java-Themen 27
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
Tobero Wie kann man eine Poisson Disc Sampler? Allgemeine Java-Themen 7
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben