[解決済み] Java 8では、関数型インターフェースは何に使われるのですか?
質問事項
Java 8の新しい用語、quot;functional interface"に出会いました。この用語の使い方は ラムダ式 .
Java 8 にはいくつかの組み込み関数インターフェイスが用意されており、任意の関数インターフェイスを定義したい場合、そのインターフェイスを使用するために
@FunctionalInterface
アノテーションを使用します。このアノテーションを使うと、インターフェースに単一のメソッドだけを宣言することができます。
例えば
@FunctionalInterface
interface MathOperation {
int operation(int a, int b);
}
との連携以外にJava 8でどれだけ役に立つか? ラムダ式 ?
(質問 ここで は、私が質問した内容とは異なります。ラムダ式で作業しているときに、なぜ関数型インターフェースが必要なのか、という質問です。私の質問は、ラムダ式で使う以外に関数型インターフェースはどのような使い方があるのか、というものです)。
どのように解決するのですか?
@FunctionalInterface
アノテーションは、コンパイル時にコードをチェックするのに便利です。の他に複数のメソッドを持つことはできません。
static
,
default
のメソッドをオーバーライドする抽象的なメソッドと
Object
を使用します。
@FunctionalInterface
または機能インターフェイスとして使用される他のインターフェイス。
しかし、このアノテーションがなくてもラムダを使用することができますし、メソッドをオーバーライドする際も、このアノテーションがなくても使用できます。
@Override
アノテーションを使用します。
docsより
関数型インターフェースは、ちょうど1つの抽象的なメソッドを持ちます。デフォルトの メソッドには実装があるので、抽象的ではありません。もし、あるインターフェイス のパブリックメソッドの一つをオーバーライドする抽象メソッドを宣言しています。 java.lang.Objectの場合、これもインターフェイスにカウントされません。 抽象的なメソッドの数は、インターフェイスの実装のいずれもが java.lang.Objectまたはその他の実装を持つ。
これは が使用できます。 をラムダ式で表現しています。
public interface Foo {
public void doSomething();
}
これは 使用不可 をラムダ式で使用します。
public interface Foo {
public void doSomething();
public void doSomethingElse();
}
しかし、これでは コンパイルエラー :
@FunctionalInterface
public interface Foo {
public void doSomething();
public void doSomethingElse();
}
無効な '@FunctionalInterface' アノテーション; Foo は関数型ではありません。 インターフェース
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
javaの模造品QQ WeChatのチャットルーム
-
Methodのinvokeメソッド実装のJavaリフレクション
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
このラインで複数のマーカーを解決する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Java 8のインターフェイスメソッドで "final "が使えないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.util.NoSuchElementException 原因解析と解決方法
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Java Exceptionが発生しました エラー解決
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Methodのinvokeメソッド実装のJavaリフレクション
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
java 例外。Javaツールの初期化
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。