---
title: 'Annotation @FunctionalInterface'
url: 'https://www.tutego.de/blog/javainsel/2013/02/annotation-functionalinterface'
markdown: 'https://www.tutego.de/blog/javainsel/2013/02/annotation-functionalinterface.md'
date: '2013-02-02'
description: 'Zwar eignet sich jede Schnittstelle mit einer abstrakten Methode als funktionale Schnittstelle und damit für einen Lambda-Ausdruck, doch nicht jede Schnittstelle, die im Moment nur eine abstrakte Methode deklariert, soll auch für Lambda-Ausdrücke verwendet werden. Der Compiler kann das jedoch nicht…'
taxonomy:
  category:
    - Insel
    - 'Java 8'
---

# Annotation @FunctionalInterface

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Annotation @FunctionalInterface

02.02.2013 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Zwar eignet sich jede Schnittstelle mit einer abstrakten Methode als funktionale Schnittstelle und damit für einen Lambda-Ausdruck, doch nicht jede Schnittstelle, die im Moment nur eine abstrakte Methode deklariert, soll auch für Lambda-Ausdrücke verwendet werden. Der Compiler kann das jedoch nicht wissen, ob sich vielleicht Schnittstellen weiterentwickeln, und daher gibt es zur Dokumentation die Annotation FunctionalInterface im `java.lang`-Paket.

**Beispiel:** Eine eigene funktionale Schnittstelle soll FunctionalInterface markieren:

```java
@FunctionalInterface

interface MyFunctionalInterface {

void foo();

}
```

Der Compiler prüft, ob die Schnittstelle mit einer solchen Annotation tatsächlich nur exakt eine abstrakte Methode enthält und löst einen Fehler aus, wenn dem nicht so ist. Aus Kompatibilitätsgründen erzwingt der Compiler nicht diese Annotation bei funktionalen Schnittstellen, um inneren Klassen von alten Schnittstellen einfach in Lambda-Ausdrücke umzuschreiben zu können. Die Annotation ist also keine Voraussetzung für die Nutzung in einem Lambda-Ausdruck und dient bisher nur der Dokumentation.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 8](https://www.tutego.de/blog/javainsel/category/java-8/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Die Umgebung der Lambda-Ausdrücke](https://www.tutego.de/blog/javainsel/2013/02/die-umgebung-der-lambda-ausdrcke.md)
- Next: [Rekursive Lambda-Ausdrücke](https://www.tutego.de/blog/javainsel/2013/02/rekursive-lambda-ausdrcke.md)
