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