--- title: JAVA - 10. Interfaces fonctionnelles tags: POO --- ## Interface fonctionnelle Les interfaces fonctionnelles ont été introduites en Java 8. Une interface fonctionnelle en Java est une interface qui **ne contient qu’une seule méthode abstraite** (non implémentée) ```java= public interface Operation { public int calculer(int x); } ``` 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. ```java= public interface Operation { public int calculer(int x); 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. ### :small_blue_diamond: Annotation @FunctionalInterface : L’annotation **@FunctionalInterface** est utilisée pour s’assurer que l’interface fonctionnelle ne peut pas avoir plus d’une méthode abstraite. Si plusieurs méthodes abstraites sont présentes, le compilateur signale un message **"Unexpected @FunctionalInterface annotation"**. ```java= @FunctionalInterface public interface Operation { public int calculer(int x); } ``` :::info Cependant, il n'est pas obligatoire d'utiliser cette annotation. :::