Interfete functionale

O interfata cu o singura metoda abstracta se numeste interfata functionala.

Adnotatia @FunctionalInterface a fost introdusa pentru a marca o interfata functionala. Adaugarea ceste adnotari previne eventualele adaugari accidentale de metode multiple intr-o interfata care se doreste a fi de tip functional dar in esenta orice interfata cu o singura metoda este interfata functionala si adnotarea @FunctionalInterface nu este obligatorie.

@FunctionalInterface
interface Shape{
    public void draw();
}
 
class ShapeImpl implements Shape {
 
    @Override
    public void draw() {
        System.out.println("Drawing shape!");
    }
 
}

Aceste interfete sunt utile in special in cadrul expresiilor lambda.