add comment

This commit is contained in:
Looly 2024-08-21 18:54:19 +08:00
parent 024dc523bd
commit c0793d90bb

View File

@ -81,15 +81,20 @@ public class BitStatusUtil {
* <li>必须大于0</li>
* <li>必须为偶数</li>
* </ul>
* 原因见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 + " 不是偶数");
}
}