Java 8 bereichert das Java Universum um Functional Interfaces. Ein Interface ist genau dann ein Functional Interface wenn es nur eine abstrakte Methode definiert. Ein populäres Beispiel dafür ist java.lang.Runnable da es lediglich
void run();
als abstrakte Methode definiert. Das funktionale Interface wird in weiterer Folge benötigt, um Lambda Ausdrücke, Methodenreferenzen und Klassenreferenzen nutzen zu können. Dazu hier im Blog bald mehr.
Um ein Interface bewusst als funktionales Interface zu kennzeichnen gibt es, seit Java 8, die neue Annotation @FunctionalInterface. Ein Interface mit dieser Annotation wirft beim Kompilieren einen Fehle, wenn es die Voraussetzungen dafür nicht erfüllt.
Ein funktionales Interface darf zwar nur eine abstrakte Methode definieren, kann jedoch beliebig viele default und static Methoden (siehe meinen Blogpost Java 8 – Erweiterungen rund ums Interface) führen.
Schreibe einen Kommentar