HOWTO · Java

Java 中的冪等

本教程演示了在 Java 中使用冪等性。

冪等意味著我們可以多次應用一個操作,但結果總是相同的。例如,我們呼叫冪等方法的頻率無關緊要。結果總是一樣的。

本教程演示了在 Java 中使用冪等性。

Java 中的冪等

如上所述,冪等方法每次都返回相同的結果。例如,x=1; 是冪等的,因為它每次都返回 1,但是 x++; 不能是冪等的,因為每次呼叫都會改變結果。

例如,如果我們關閉一個物件一次,那麼現在我們沒有足夠的資訊來知道該物件在關閉後是否是冪等的。

為了檢查這一點,我們需要再次關閉該物件,如果它丟擲異常,則表示該物件不是冪等的,如果在關閉時返回相同的結果,則表示該物件是冪等的。

讓我們嘗試在 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 方法分為兩種型別,一種是 Idempotent,另一種是 Non-Idempotent。下表演示了哪些 HTTP 方法是冪等的,哪些不是。

方法 是否是冪等的
GET 是的
PUT 是的
POST
DELETE 是的
HEAD 是的
OPTIONS 是的
PATCH