HOWTO · Java
Java での閉鎖
このチュートリアルでは、Java でのクロージャーについて説明します。
このページの内容
変数の値をインクリメントするラムダ式を定義すると、エラーがスローされます。
ただし、この問題には簡単な解決策があります。 Closures を使用することで、このエラーを防ぐことができます。
Closures はインライン関数であり、値付きの式を持ちます。つまり、境界変数を持つクラスの関数です。 Closures のもう 1つのエキサイティングな機能は、別の関数にパラメーターとして渡すことができることです。
この記事では、クロージャ について詳しく説明し、トピックを簡単にするために必要な例と説明を提供します。
議論に入る前に、以下のような閉鎖の一般的な構文を見てみましょう。
(List_of_Arguments) -> {
Function_Body
}
Java での閉鎖
以下の例では、Closures を使用して 2つの文字列を結合する最も基本的な Closures を示します。 以下のコードを見てみましょう。
package javacodes;
// Importing necessary packages
import java.io.*;
interface CombineString { // Defining a interface
public String concat(String a, String b);
}
// The controlling class
public class JavaClosures {
public static void main(String[] args) {
// Using the "Lambda Expression"
CombineString cs = (str1, str2) -> str1 + str2;
System.out.println("The combined string is: " + cs.concat("Alen", " Walker"));
}
}
各行の目的についてはすでにコメントしました。 上記の例では、最初に CombineString という名前のインターフェイスを concat という名前の抽象メソッドで定義しました。
制御クラスでは、抽象メソッドを定義する Closure を作成しました。
上記の例を実行すると、次のような出力が得られます。
The combined string is: Alen Walker
Java でのクロージャのネストされた使用
トピックをもう少し深く掘り下げてみましょう。 以下の例を見てください。ここでは、2つの Closures の間にネストされた呼び出しを作成しています。
interface PrintData { // An interface to print data
public void Print(int data); // An abstract method to print data
}
interface NumberAdd { // An interface to add two numbers
public void add(int a, int b); // An abstract method to add two numbers
}
// Main controlling class
public class JavaClosures {
public static void main(String[] args) {
// Using the "Lambda Expression"
PrintData printdata = (str) -> {
System.out.println("The combined string is: " + str);
};
NumberAdd addnum = (x, y) -> {
printdata.Print(x + y); // The nested call
};
addnum.add(5, 5); // Calling the add method
}
}
各行の目的についてはすでにコメントしました。 上記の例では、最初にインターフェイス PrintData と NumberAdd を作成しました。
インターフェース PrintData には抽象メソッド Print が含まれており、インターフェース NumberAdd には抽象メソッド add が含まれています。
制御クラスでは、最初に抽象メソッド Print を定義しました。これは、このメソッドを厄介に呼び出すためです。
次に、抽象メソッド add を定義します。このメソッドの定義を見ると、メソッド Print を呼び出していることがわかります。
上記の例を実行すると、以下のような出力が得られます。
The combined string is: 10
ここで共有されているコード例は Java であり、システムに Java が含まれていない場合は、環境に Java をインストールする必要があることに注意してください。