From c0793d90bbef04efa338f7a13ceb06a8460348fa Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 21 Aug 2024 18:54:19 +0800 Subject: [PATCH] add comment --- .../java/org/dromara/hutool/core/math/BitStatusUtil.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/math/BitStatusUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/math/BitStatusUtil.java index 20d4d3b2c..5e9b40e9b 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/math/BitStatusUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/math/BitStatusUtil.java @@ -81,15 +81,20 @@ public class BitStatusUtil { *
  • 必须大于0
  • *
  • 必须为偶数
  • * + * 原因见:https://github.com/dromara/hutool/pull/3706 * * @param args 被检查的状态 */ private static void check(final int... args) { for (final int arg : args) { if (arg < 0) { + //位运算中 0 在二进制表示中所有位都是 0,它并不能代表任何特定状态 + //如果 0 被允许作为一个合法状态值,那么在检查状态时(比如通过 has() 方法),它将无法有效区分 0 是代表“无状态”还是代表某个特定状态。 + //如果允许 0 作为状态,它可能会与清空状态的操作(clear() 方法返回 0)发生混淆,从而导致逻辑上的错误。 throw new IllegalArgumentException(arg + " 必须大于等于0"); } if ((arg & 1) == 1) { + //使用偶数作为状态值,确保每个状态只占用二进制中的一位,从而避免不同状态之间的混淆,确保位运算的准确性。 throw new IllegalArgumentException(arg + " 不是偶数"); } }