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 不