Java での閉鎖

MD Aminul Islam 2023年10月12日
  1. Java での閉鎖
  2. 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 をインストールする必要があることに注意してください。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn