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
  }
}

各行の目的についてはすでにコメントしました。 上記の例では、最初にインターフェイス PrintDataNumberAdd を作成しました。

インターフェース PrintData には抽象メソッド Print が含まれており、インターフェース NumberAdd には抽象メソッド add が含まれています。

制御クラスでは、最初に抽象メソッド Print を定義しました。これは、このメソッドを厄介に呼び出すためです。

次に、抽象メソッド add を定義します。このメソッドの定義を見ると、メソッド Print を呼び出していることがわかります。

上記の例を実行すると、以下のような出力が得られます。

The combined string is: 10

ここで共有されているコード例は Java であり、システムに Java が含まれていない場合は、環境に Java をインストールする必要があることに注意してください。