Java SE 8 Programmer II: Lambdas

Um Lambdas zu verstehen, muss zuerst der Begriff des 'Funktionalen Interfaces' geklärt werden.
Ein funktionales Interface hat nur eine abstrakte Methode. Methoden, die die Signatur der Methoden aus java.lang.Object entsprechen, verhindern genau so wenig, wie eine beliebige Anzahl von 'default' oder 'static' Methoden, dass ein Interface funktional ist.

Mit der Annotation @FunctionalInterface kann ein Interface entsprechend deklariert werden. Das macht ein Interface nicht zu einem funktionalen Interface, aber der Compiler zeigt Verletzungen der Regeln an.