@Documented @Retention(RUNTIME) @Target(TYPE) public @interface FunctionalInterface
インタフェース型の宣言を、Java言語仕様に定義されている関数型インタフェースとすることを目的としていることを示すために使われる情報目的の注釈型です。 概念上、1つの関数型インタフェースには抽象メソッドが1つだけあります。 デフォルト・メソッドには実装が1つ含まれているため、それらは抽象メソッドではありません。 インタフェースが、
java.lang.Object
のpublicメソッドの1つをオーバーライドする抽象メソッドを宣言する場合も、それはインタフェースの抽象メソッド数に反映されません。理由は、そのインタフェースのいずれかの実装にjava.lang.Object
または他の場所からの実装が含まれるからです。
ラムダ式、メソッド参照、またはコンストラクタ参照を使って関数型インタフェースのインスタンスを作成できることに注意してください。
型にこの注釈型が付けられている場合、コンパイラは、次の場合を除いてエラー・メッセージを生成するよう義務付けられています。
- その型がインタフェース型であり、注釈型、列挙、またはクラスではない。
- その注釈付きの型が関数型インタフェースの要件を満たしている。
ただし、インタフェース宣言にFunctionalInterface
注釈型が存在しているかどうかにかかわらず、コンパイラは関数型インタフェースの定義を満たすどのインタフェースも関数型インタフェースとして扱います。
- Java言語仕様を参照してください:
-
4.3.2 クラス・オブジェクト
9.8機能インタフェース
9.4.3インタフェース・メソッド本文
9.6.4.9 @FunctionalInterface - 導入されたバージョン:
- 1.8