Funktionale Interfaces mit mehreren abstrakten Methoden?

udem

Mitglied
Hallo liebe Mitglieder,

wodurch erkennt ein Compiler, ob ein Interface eine Methode eines anderen Interfaces überschreibt?
Es findet schließlich kein Einsatz von Codes, wie "implements" oder "extends" statt, die dies signalisieren könnten
und eine Annotation wie @Override ist nicht vorgeschrieben.

Hintergrund der Frage ist zu verstehen, wie ein Compiler ein Funktionales Interface mit mehreren abstrakten Methoden (z.B. Comparator) als solches erkennt
und nicht als gewöhnliches Interface interpretiert.

Freundliche Grüße
U.D.
 

DrPils

Bekanntes Mitglied
Ein Funktionales Interface definiert immer genau eine abstrakte Methode, statische und Default Methoden können dabei beliebig viele existieren. Schau dir den Comperator Mal an. Dann siehst du das nur eine Methode abstrakt ist.
 

KonradN

Super-Moderator
Mitarbeiter
Neben den vielen default-Methoden sehe ich compare() und equals().
Ja, das ist auch korrekt. Die Aussage mit der "genau eine abstrakte Methode" ist etwas ungenau. Es ist nur genau eine abstrakte Methode mit Ausnahme von Methoden der Klasse Object. Siehe dazu: JLS 9.8: https://docs.oracle.com/javase/specs/jls/se20/html/jls-9.html#jls-9.8
A functional interface is an interface that is not declared sealed and has just one abstract method (aside from the methods of Object), and thus represents a single function contract.

equals ist in Comparator, aber das ist auch eine Methode in Object.
 

httpdigest

Top Contributor
Naja, das Interface deklariert ganz genau nur eine abstrakte Methode. equals() und hashCode() und toString(), etc. werden ja nicht von diesem Interface deklariert.
 

KonradN

Super-Moderator
Mitarbeiter
Naja, das Interface deklariert ganz genau nur eine abstrakte Methode. equals() und hashCode() und toString(), etc. werden ja nicht von diesem Interface deklariert.
openjdk-jdk11/Comparator.java at master · AdoptOpenJDK/openjdk-jdk11 (github.com)
Java:
@FunctionalInterface
public interface Comparator<T> {
   
    int compare(T o1, T o2);
   
    boolean equals(Object obj);

    // ...
}

Also extrem stark gekürzt und Kommentare weggelassen und so. Aber dieses Interface Comparator deklariert genau dies.

Edit: Tippfehler
 

KonradN

Super-Moderator
Mitarbeiter
Aber wieso tut man das? Ist ja jetzt nicht so dass ich jetzt equals überschreiben muss.
Rein zu Dokumentationszwecken?
Ja, nach meinem Verständnis dient dies nur zur Dokumentation wichtiger Dinge in Zusammenhang mit der Methode. Aus Java Sicht macht es keinen Unterschied, ob du die abstrakte Methode im Interface hast oder nicht - mit Ausnahme der Sichtbarkeit: clone in Object ist protected, wird die Methode im Interface verlangt, dann wird eine public Implementation verpflichtend. Aber das ist mir so noch nicht unter gekommen.

Dazu findet sich auch etwas in der JLS unter 9.8.
 

KonradN

Super-Moderator
Mitarbeiter
Also da evtl. auch kurz zu der Relevanz: Die Antworten #2 (@DrPils) und #5 (@httpdigest) zeigen die „normale“ Sichtweise. Funktionales Interface = 1 abstract Method. Das mit Object ist eigentlich nicht wirklich relevant für die Praxis. Das ist mehr was für „Verrückte“, die Spaß daran haben, die JLS unter dem Kopfkissen liegen zu haben oder so.

Die Aussage von Dir @DrPils ist daher so auch weiterhin mit Like versehen und die würde ich so im Forum auch immer so bringen. Denn das ist in der Praxis nach meiner Erfahrung durchaus so. (JDK Framework Entwickler haben halt alle die JLS unter dem Kopfkissen … daher hat Comparator auch equals drin :) )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Funktionale Interfaces Java Basics - Anfänger-Themen 3
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I XML und Interfaces aus anderen Projekten Java Basics - Anfänger-Themen 3
8u3631984 Record - Interfaces Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
B JaxB und Interfaces? Java Basics - Anfänger-Themen 2
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Klasse erbt von Interfaces Java Basics - Anfänger-Themen 6
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Interface Warum Interfaces? Java Basics - Anfänger-Themen 5
R interfaces Java Basics - Anfänger-Themen 1
B Interfaces Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
J Interfaces? Java Basics - Anfänger-Themen 32
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J Wofür dienen Interfaces ? Java Basics - Anfänger-Themen 1
Hijo2006 Frage zu Interfaces Java Basics - Anfänger-Themen 21
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
J Interfaces Java Basics - Anfänger-Themen 15
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
D Interface Verständnisprobleme von Interfaces Java Basics - Anfänger-Themen 5
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
S Rollen verändern, Interfaces austauschen wie? Java Basics - Anfänger-Themen 10
K Interfaces/Klassen etc. Java Basics - Anfänger-Themen 6
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
F Best Practice UML/Planung eines Projektes (Klassen, Interfaces, ...) Java Basics - Anfänger-Themen 0
V Vererbung Vererbung, Interfaces und OOP... Java Basics - Anfänger-Themen 10
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
A Interface Poymorphismus bei Interfaces Java Basics - Anfänger-Themen 2
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
M Interface @Inject mit Interfaces? Java Basics - Anfänger-Themen 2
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
S Interface mehrere Interfaces Java Basics - Anfänger-Themen 2
M Vererbung Problem bei Interfaces Java Basics - Anfänger-Themen 8
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
F Interfaces Java Basics - Anfänger-Themen 4
M Frage zu Interfaces Java Basics - Anfänger-Themen 3
N Generics und Interfaces Java Basics - Anfänger-Themen 5
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
N OOP Vererbung von Interfaces Java Basics - Anfänger-Themen 12
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
P Frage zu Interfaces Bsp. Java Basics - Anfänger-Themen 9
A Deklarationen in abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 11
R Adapterklassen vs Interfaces Java Basics - Anfänger-Themen 6
P Interfaces -> eins oder mehrere für eine Anwendung? Java Basics - Anfänger-Themen 9
2 Interfaces, Polymorphie und Methoden. Java Basics - Anfänger-Themen 14
A Obstlager Interfaces Java Basics - Anfänger-Themen 7
K Theor. Frage zu Interfaces Java Basics - Anfänger-Themen 30
T Frage zu Interfaces und Abstrakten Klassen Java Basics - Anfänger-Themen 4
J Interfaces Java Basics - Anfänger-Themen 14
L Interfaces Java Basics - Anfänger-Themen 5
J spiel "Gefangenendilemma" Probleme mit Interfaces Java Basics - Anfänger-Themen 8
H Interfaces in java? Java Basics - Anfänger-Themen 2
A OOP Interfaces mit gleichem Methoden Java Basics - Anfänger-Themen 15
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
D Interfaces / Schnittstellen Java Basics - Anfänger-Themen 8
I Probleme mit Interfaces Java Basics - Anfänger-Themen 4
K Interfaces "Schreibaufwand" Java Basics - Anfänger-Themen 53
I Interfaces Java Basics - Anfänger-Themen 34
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
A Programmieren gegen Interfaces Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
7 Interfaces - Aufbau Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben