HOWTO · Java

Java でのメソッド チェーン

このチュートリアルでは、Java でメソッド チェーンを実行する方法を示します。

このチュートリアルでは、Java でメソッド チェーンを実行する方法を示します。

Java でのメソッド チェーン

メソッドチェーンは、ドット . を使用して複数のメソッドを同時に呼び出します オペレーター。 メソッド チェーンは 1つのステートメントで複数のメソッドを呼び出しますが、メソッドのチェーンは 1つのステートメントで呼び出されます。

メソッドチェーンは、チェーン内の各メソッドがオブジェクトを返すオブジェクト指向プログラムの概念です。 メソッド チェーンは、1つのオブジェクトで複数のメソッドを呼び出すこととして定義することもできます。

メソッド連鎖の構文は次のとおりです。

DemoObject.method1().method2().method3();

構文からわかるように、3つのメソッドが DemoObject で呼び出されます。 このように次々とメソッドを呼び出すことを、メソッド連鎖の概念と呼びます。

メソッド チェーンは、Java のパラメータ イディオムとしても知られています。 メソッドの数が増えると、列車事故と呼ばれることもあります。

Java でのメソッド チェーンの例を試してみましょう。

package delftstack;
class Demo {
  private int DemoInt;
  private float DemoFloat;

  Demo() {
    System.out.println("This is the consutructor");
  }

  int SetInteger(int DemoInt) {
    this.DemoInt = DemoInt;
    return this.DemoInt;
  }

  float SetFloat(float DemoFloat) {
    this.DemoFloat = DemoFloat;
    return this.DemoFloat;
  }

  void DisplayData() {
    System.out.println("Display Numbers=" + DemoInt + " " + DemoFloat);
  }
}

public class Example {
  public static void main(String[] args) {
    new Demo().SetInteger(34).DisplayData();
  }
}

上記のコードは、Demo クラスのオブジェクトにメソッド チェーンを適用しています。 しかし、DisplayData メソッドは SetInteger が int 値を返すオブジェクトを返すため、エラーがスローされます。

メソッド連鎖の概念はそのようには機能しません。

出力を参照してください。

public class Example {
       ^
Demo.java:33: error: int cannot be dereferenced
new Demo().SetInteger(34).DisplayData();
^
2 errors

この問題を解決するには、メソッドを Demo クラスの型として定義し、メソッドで this オブジェクトのみを返す必要があります。

例を参照してください。

package delftstack;

class Demo {
  private int DemoInteger;
  private float DemoFloat;

  Demo() {
    System.out.println("This is the consutructor");
  }

  public Demo SetInteger(int DemoInteger) {
    this.DemoInteger = DemoInteger;
    return this;
  }

  public Demo SetFloat(float DemoFloat) {
    this.DemoFloat = DemoFloat;
    return this;
  }

  void DisplayData() {
    System.out.println("Display Numbers=" + DemoInteger + " " + DemoFloat);
  }
}

class Example {
  public static void main(String[] args) {
    new Demo().SetInteger(43).SetFloat(23).DisplayData();
  }
}

これで、コードは正しく機能します。 出力を参照してください。

This is the consutructor
Display Numbers=43 23.0

Java でメソッド チェーンを使用する際に考慮すべき重要な点を次に示します。

  1. コンストラクターが呼び出されるたびに、コンストラクターが戻り値を保持しないようにする必要があります。
  2. コンストラクターは常にオブジェクト参照を返すため、このオブジェクト参照を使用して別のメソッドを呼び出すことができます。
  3. ドット . でメソッドチェーンを適用しながら 演算子では、チェーン内の各メソッドがオブジェクト参照を返すようにする必要があります。

たとえば、最初の例では、メソッド SetInteger は int を返し、DisplayData メソッドはオブジェクト参照を返すため、エラーが返されます。 同様に、2 番目の例では、すべてのメソッドがオブジェクト参照を返すため、正しく動作しています。