この記事では、Java Lambdas(匿名関数を取り付けます)と、機能的なインターフェイス(1つの抽象的方法を備えたインターフェイス)での使用について説明します。それはラムダの構文を詳細に説明し、それらを簡潔さと読みやすさを強調する匿名の内部クラスと対比します
Java Lambdasと機能的なインターフェイスの使用方法
Java Lambdasは、Java内の機能的なプログラミングパラダイムを提供する簡潔な匿名関数です。それらは本質的に、方法の引数として渡されたり、変数に保存されたりすることができるコードのブロックです。それらを使用するには、機能的なインターフェイスが必要です。これは、1つの抽象的なメソッドを持つインターフェイスです(ただし、複数のデフォルトメソッドまたは静的メソッドを持つことができます)。 Lambda式の署名は、機能的インターフェイスの抽象的な方法と暗黙的に一致します。
Runnable
インターフェイス(組み込みの機能インターフェイス)を使用した簡単な例を次に示します。
<code class="java">Runnable myRunnable = () -> System.out.println("Hello from a lambda!"); new Thread(myRunnable).start();</code>
このコードは、lambda expression () -> System.out.println("Hello from a lambda!");
これにより、 Runnable
インターフェイスのrun()
メソッドを実装します。空の括弧()
は、ラムダが議論をしないことを示します。矢印->
パラメーターリストを本体から分離します。
パラメーターを備えたラムダを使用する別の例:
<code class="java">interface StringOperation { String operate(String str); } StringOperation reverseString = (str) -> new StringBuilder(str).reverse().toString(); String reversed = reverseString.operate("hello"); // reversed will be "olleh"</code>
ここでは、 StringOperation
は機能的なインターフェイスです。 lambda式(str) -> new StringBuilder(str).reverse().toString()
String
引数( str
)を取り、反転したString
を返します。
匿名の内部クラスに対するJava Lambdasの利点
匿名の内部クラスは、同様の機能を達成しますが、ラムダよりもはるかに冗長です。 Lambdasを使用すると、いくつかの重要な利点があります。
- Brevity: Lambdasははるかに簡潔で、よりクリーンで読みやすいコードにつながります。これにより、必要なボイラープレートコードの量が減少します。
- 読みやすさの向上: Lambdasの簡潔な構文により、コードの理解と維持が容易になります。構文が意図を曖昧にする可能性のある匿名の内部クラスとは異なり、コアロジックはすぐに明らかになります。
- 柔軟性の向上:ラムダは、メソッド引数、返品値、可変割り当てなど、さまざまなコンテキストでより柔軟に使用できます。匿名の内部クラスは、使用がより制限されています。
- タイプの推論:コンパイラは、ラムダパラメーターの種類を推進し、明示的なタイプ宣言の必要性を減らします。これにより、コードが簡素化され、エラーが発生しやすくなります。
Runnable
例をもう一度考えてみましょう。匿名の内部クラスに相当するものは次のとおりです。
<code class="java">Runnable myRunnable = new Runnable() { @Override public void run() { System.out.println("Hello from an anonymous inner class!"); } }; new Thread(myRunnable).start();</code>
これは、ラムダバージョンよりも明らかに長く、表現力が低いです。
Javaで独自の機能インターフェイスを作成します
独自の機能インターフェイスを作成するのは簡単です。 1つの抽象的なメソッドでインターフェイスを定義するだけです。必要に応じて、デフォルトのメソッドと静的メソッドを追加できます。 @FunctionalInterface
アノテーションはオプションですが、推奨されます。コンパイラが単一の抽象メソッドルールを強制し、エラーを早期にキャッチするのに役立ちます。
<code class="java">@FunctionalInterface interface MyFunctionalInterface { int calculate(int a, int b); default int add(int a, int b){ return ab; } } // Usage MyFunctionalInterface myOperation = (a, b) -> a * b; int result = myOperation.calculate(5, 3); // result will be 15 int sum = myOperation.add(5,3); // result will be 8</code>
この例では、 MyFunctionalInterface
は、1つの抽象的なメソッドcalculate()
を備えた機能的なインターフェイスです。 @FunctionalInterface
アノテーションはこれを示します。 add()
メソッドはデフォルトメソッドです。
既存のライブラリとフレームワークを使用してJava Lambdasを使用します
Java Lambdasは、多くの既存のJavaライブラリとフレームワークによって広くサポートされています。それらはコアJava APIに統合されており、一般的に使用されます。
- Java Streams API: Streams APIは、データの収集を効率的に処理するためにLambdasに大きく依存しています。
- Swing and Javafx:これらのUIフレームワークでのイベント処理は、Lambdasを使用して大幅に簡素化できます。
- スプリングフレームワーク:スプリングは、依存関係の注入、イベントの取り扱い、その他の側面のためにラムダスを広範囲に利用します。
- 他の多くのライブラリ:多数のサードパーティライブラリが、より簡潔で機能的なコードのために、ラムダをAPIに組み込みます。
たとえば、Streams APIでLambdasを使用してください。
<code class="java">List<integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream().map(n -> n * 2).sum(); // sum will be 30</integer></code>
このコードは、ストリームパイプライン内のlambda n -> n * 2
を使用して、合計する前に各数値を2倍にします。これは、従来の反復を使用することと比較して、はるかにクリーンなアプローチです。ラムダの広範な採用は、それらを現代のジャバ開発の重要な部分にしています。
以上がJava Lambdasと機能的なインターフェイスを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
