Heim >Java >javaLernprogramm >Wie rufe ich Standardmethoden in Java explizit auf?
Standardmethoden explizit in Java aufrufen
Java 8 führt Standardmethoden ein, um Schnittstellen zu erweitern, ohne vorhandene Implementierungen zu ändern. Entwickler können jedoch auf Szenarien stoßen, in denen der explizite Aufruf einer Standardimplementierung erforderlich ist, beispielsweise wenn eine Methode überschrieben wurde oder Konflikte mit mehreren Standardimplementierungen in verschiedenen Schnittstellen auftreten.
Betrachten Sie das folgende Beispiel:
interface A { default void foo() { System.out.println("A.foo"); } } class B implements A { @Override public void foo() { System.out.println("B.foo"); } public void afoo() { // how to invoke A.foo() here? } }
Um A.foo() aus Klasse B explizit aufzurufen, verwenden Sie die folgende Syntax:
A.super.foo();
Mit dieser Syntax können Sie angeben die genaue Standardimplementierung, die aufgerufen werden soll, um potenzielle Konflikte oder übergeordnete Probleme zu lösen. Im obigen Beispiel kann afoo() wie folgt implementiert werden:
public void afoo() { A.super.foo(); }
Der Code in afoo() ruft nun die Standardimplementierung von foo() von Schnittstelle A auf, auch wenn sie in überschrieben wurde Klasse B.
Wenn mehrere Schnittstellen Standardmethoden mit demselben Namen definieren, können Sie außerdem dieselbe Syntax verwenden, um die spezifische Implementierung auszuwählen, die aufgerufen werden soll. Wenn C beispielsweise eine weitere Schnittstelle mit einer Standardmethode foo() ist, kann der folgende Code verwendet werden:
public class ChildClass implements A, C { @Override public void foo() { A.super.foo(); C.super.foo(); } }
Dieser Ansatz ermöglicht Flexibilität und Kontrolle darüber, welche Standardimplementierungen in Ihren Klassen verwendet werden. Durch den expliziten Aufruf von Standardmethoden können Sie Konflikte lösen und die erweiterten Funktionen der Standardmethoden von Java 8 nutzen, ohne vorhandene Schnittstellendefinitionen ändern zu müssen.
Das obige ist der detaillierte Inhalt vonWie rufe ich Standardmethoden in Java explizit auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!