HOWTO · Java

Java のべき等

このチュートリアルでは、Java でのべき等の使用法を示します。

べき等とは、操作を複数回適用できることを意味しますが、結果は常に同じです。たとえば、べき等メソッドを呼び出す頻度は関係ありません。結果は常に同じになります。

このチュートリアルでは、Java でのべき等の使用法を示します。

Java のべき等

上記のように、べき等メソッドは毎回同じ結果を返します。たとえば、x=1; 毎回 1 を返すためべき等ですが、x++; 呼び出しごとに結果が変わるため、べき等にすることはできません。

たとえば、1つのオブジェクトを一度閉じると、閉じた後にオブジェクトがべき等であるかどうかを知るための十分な情報がありません。

これを確認するには、オブジェクトをもう一度閉じる必要があります。例外がスローされた場合は、オブジェクトがべき等ではないことを意味し、閉じたときに同じ結果が返された場合は、オブジェクトがべき等であることを意味します。

Java でべき等の closeable を実装してみましょう。

package delftstack;

import java.io.Closeable;

public class Idempotent implements Closeable {
  private static boolean closed;

  public Idempotent() {
    closed = false;
  }
  public void close() {
    if (!Is_Closed()) {
      closed = true;
    }
  }

  public static boolean Is_Closed() {
    return closed;
  }
  public static void main(String args[]) {
    System.out.println(Is_Closed());
    System.out.println(Is_Closed());
  }
}

Closeablejava.io のクラスです。ブール値を初期化し、Idempotent メソッドで false に設定することにより、べき等の closeable を実装しました。常に false を返します。

出力:

false
false

Java のべき等メソッド

べき等メソッドの用語は、HTTP メソッドに対応します。リクエストを何度呼び出しても、メソッドの結果が常に同じである場合、HTTP メソッドはべき等です。

例を使用して、べき等 HTTP メソッドを理解してみましょう。

GET リクエスト:GET リクエストを何度行っても、リクエストが適切に実装されていれば、常に同じ応答が返されます。

たとえば、システムで結果を確認するために GET リクエストを作成します。何度リクエストしても同じです。

HTTP メソッドは、べき等であるタイプと非べき等であるタイプの 2つに分けられます。次の表は、べき等の HTTP メソッドとそうでない HTTP メソッドを示しています。

方法 べき等?
GET はい
PUT はい
POST いいえ
DELETE はい
HEAD はい
OPTIONS はい
PATCH いいえ