---
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.
:::