Java 8 では、Java コードの記述方法を変革し、より効率的、表現力豊か、そして機能的なものにする強力な新機能が導入されました。このブログでは、ラムダや Stream API など、Java 8 の主要な機能をいくつか紹介します。初心者でも経験豊富な開発者でも、このガイドはこれらの更新を理解し、活用してよりクリーンで簡潔なコードを作成するのに役立ちます。
ラムダ式は、パラメータを受け取り、値を返す単純なコード ブロックです。これらは関数に似ていますが、名前は必要なく、メソッドの本体に直接実装できます。ラムダ式は主に関数インターフェイスを実装するために使用され、長い定型コードを排除して読みやすさを強化します。
ラムダ式なし
ラムダ式を使用する
Java の関数型インターフェイスは、単なる 1 つのジョブを持つインターフェイスです。抽象メソッド (本体のないメソッド) が 1 つだけあります。これを 1 つのタスクの青写真と考えてください
たとえば、Printable という関数インターフェイスがある場合、詳細を指定せずにテキストを印刷する方法を定義する print メソッドが 1 つある可能性があります。これを使用する場合は、print が実際に行うべき処理 (コンソールへの印刷またはファイルへの書き込み) の詳細を指定するだけです。
Java 8 のメソッド参照は、コードをすっきりと読みやすくするショートカットのようなものです。実際にメソッドを直接呼び出すことなく、Java に特定のメソッドを実行するように指示したいと想像してください。完全なコマンドを書き出す代わりに、メソッドを指すアドレスのような「参照」でコマンドを指すことができます。
メソッド参照の主なタイプと、それらが例でどのように機能するかを詳しく見てみましょう:
1) 静的メソッドへの参照
ここで、Test::displayMessage は、コンテンツをコンソールに出力する Test クラスの displayMessage メソッドを指します。これは省略表現であり、Java は print メソッド
を使用するときに Test.displayMessage() を実行することを認識しています。2) インスタンス メソッドへの参照
ここで、testObj::displayMessage は、Test クラスの testObj オブジェクトの displayMessage メソッドを指し、コンテンツをコンソールに出力します。これは省略表現であり、Java は print メソッド
を使用するときに testObj.displayMessage() を実行することを認識しています。3) コンストラクターへの参照
ここで、Message::new は、Printable インターフェイスの print(String msg) メソッドと一致するコンストラクター参照です。 printable.print(...) が呼び出されると、指定されたメッセージを引数として使用して Message クラスのコンストラクターがトリガーされます。
Java 8 の Stream API は、コレクション (リスト、セット、配列など) をより効率的に処理する方法です。ストリームは、元のデータを変更することなく 1 つずつ処理できる一連のデータ項目であると考えてください。これは、リストまたはコレクション内のデータをフィルター、並べ替え、または変換する場合に特に便利です。
ストリームは、データを段階的に通過させて処理させる「パイプライン」のようなものです。単語のリストがあり、「J」で始まるすべての単語を検索し、大文字にして出力したいとします。ストリームを使用すると、長いループを作成せずに、これを数行で実行できます。
ストリーム操作の種類
Java では、null のオブジェクトを使用しようとすると、NullPointerException が発生します。これは、Java でのエラーの最も一般的な原因の 1 つです。 Optional は、値が存在しない可能性があることを明確にすることで、これらのエラーを回避するのに役立ちます。 null を直接扱う代わりに、値を含むか空の Optional オブジェクトを操作します。
何が起こっているかは次のとおりです:
Java 8 より前は、インターフェイスに新しいメソッドを追加する場合、そのインターフェイスを実装するすべてのクラスが、そのメソッドの独自のバージョンを提供する必要がありました。特にたくさんのクラスがある場合、これは面倒になる可能性があります。デフォルトのメソッドを使用すると、既存のコードを壊さずに新しいメソッドをインターフェイスに追加できます。インターフェースを実装するクラスは、デフォルトのメソッドをそのまま使用することも、独自のバージョンでオーバーライドすることも選択できます。
メイン メソッドでは、InnerTest のインスタンスを作成し、そのインスタンスに対して print を呼び出します。これにより、InnerTest でオーバーライドされた print メソッドが呼び出されます。InnerTest2 は print メソッドをオーバーライドしていないため、Printable インターフェイスからのデフォルトの実装を使用します。
出力:
InnerTest:こんにちは、Java の世界へようこそ
デフォルトのメソッド: こんにちは、Java の世界へようこそ
以上がJava の機能をシンプルに: クイックガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。