Interfaces fonctionnelles en Java 8

Les interfaces fonctionnelles ont été introduit en Java 8. Une interface fonctionnelle en Java est une interface qui ne contient qu’une seule méthode abstraite (non implémentée). Une interface fonctionnelle peut contenir des méthodes par défaut et statiques qui ont une implémentation, en plus de la méthode unique non implémentée.
 
 
Voici un exemple d’une interface fonctionnelle en Java:

public interface InterfaceFonctionnel {
    public void show();
}

L’interface ci-dessus compte comme une interface fonctionnelle en Java car il ne contient qu’une seule méthode, et cette méthode n’a pas d’implémentation. Normalement, une interface Java ne contient pas d’implémentations des méthodes qu’elle déclare, mais elle peut contenir des implémentations dans les méthodes par défaut ou dans les méthodes statiques. Voici un autre exemple d’une interface fonctionnelle en Java, avec des implémentations de certaines des méthodes:

public interface InterfaceFonctionnel {
    public void show();

    public default int addition(int a, int b) {
        return a + b;
    }

    public static int soustraction(int a, int b) {
        return a - b;
    }
}

L’interface ci-dessus compte toujours comme une interface fonctionnelle, car elle ne contient qu’une seule méthode non implémentée.
 
 

Les interfaces fonctionnelles peuvent être implémentées par une expression Lambda

Une interface fonctionnelle peut être implémentée par une expression Lambda. Voici un exemple qui implémente l’interface fonctionnelle « InterfaceFonctionnel » définie dans le code ci-dessus:

InterfaceFonctionnel lambda = () -> {
    System.out.println("Calculatrice");
}

Une expression Lambda n’implémente qu’une seule méthode à partir d’une interface Java. Afin de savoir quelle méthode l’expression Lambda implémente, l’interface ne peut contenir qu’une seule méthode non implémentée. En d’autres termes, l’interface doit être une interface fonctionnelle.
QCM-Java

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *