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());
}
}
Closeable 是 java.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 |
不 |