Maison > Java > javaDidacticiel > Comment puis-je appeler explicitement la méthode par défaut d'une interface Java après le remplacement ?

Comment puis-je appeler explicitement la méthode par défaut d'une interface Java après le remplacement ?

Barbara Streisand
Libérer: 2024-12-11 18:33:10
original
798 Les gens l'ont consulté

How Can I Explicitly Call a Java Interface's Default Method After Overriding?

Invocation explicite de méthodes par défaut en Java

Java 8 a introduit les méthodes par défaut dans les interfaces, permettant l'extension d'interface sans modifier les implémentations existantes. Cependant, une question se pose : peut-on explicitement invoquer l'implémentation par défaut d'une méthode lorsqu'elle a été remplacée ou que des conflits existent en raison de plusieurs implémentations par défaut dans différentes interfaces ?

Considérons l'exemple suivant :

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?
    }
}
Copier après la connexion

Pour appeler explicitement l'implémentation par défaut de A.foo() depuis afoo() dans la classe B, nous pouvons utiliser la syntaxe :

A.super.foo();
Copier après la connexion

Ceci Cette approche nous permet d'accéder à l'implémentation par défaut d'origine de la méthode même lorsqu'elle a été remplacée ou qu'il y a des conflits avec d'autres implémentations par défaut.

Dans un scénario plus complexe, où plusieurs interfaces contiennent des méthodes par défaut portant le même nom, nous pouvons utiliser la même syntaxe pour choisir l'implémentation par défaut spécifique que nous souhaitons utiliser :

public class ChildClass implements A, C {
    @Override
    public void foo() {
       // Override and do something else

       // Or manage conflicts
       A.super.foo();
       C.super.foo(); // Default implementation from C
    }

    public void bah() {
       A.super.foo(); // Default implementation from A
       C.super.foo(); // Default implementation from C
    }
}
Copier après la connexion

En invoquant explicitement les méthodes par défaut, nous pouvons contrôler la façon dont les interfaces sont étendues, résoudre les conflits et accéder implémentations originales selon les besoins, sans rompre le contrat de remplacement. Cela offre flexibilité et personnalisation dans les conceptions basées sur l'interface.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal