gpt4 book ai didi

java - 如何使用按位运算符将多个整数值传递给 Java 函数?

转载 作者:太空狗 更新时间:2023-10-29 22:59:03 27 4
gpt4 key购买 nike

在应用程序框架中,我经常看到允许您将多个 Int 值(通常用于代替枚举)传递到函数中的框架。

例如:

public class Example
{
public class Values
{
public static final int ONE = 0x7f020000;
public static final int TWO = 0x7f020001;
public static final int THREE = 0x7f020002;
public static final int FOUR = 0x7f020003;
public static final int FIVE = 0x7f020004;
}

public static void main(String [] args)
{
// should evaluate just Values.ONE
Example.multiValueExample(Values.ONE);

// should evalueate just values Values.ONE, Values.THREE, Values.FIVE
Example.multiValueExample(Values.ONE | Values.THREE | Values.FIVE);

// should evalueate just values Values.TWO , Values.FIVE
Example.multiValueExample(Values.TWO | Values.FIVE);
}

public static void multiValueExample(int values){
// Logic that properly evaluates bitwise values
...
}
}

那么 multiValueExample 中应该存在什么样的逻辑才能正确评估使用按位运算符传入的多个 int 值?

最佳答案

您的值应该是 2 的幂。

这样,当您对它们进行按位或运算时,您不会丢失任何信息。

public static final int ONE   = 0x01;
public static final int TWO = 0x02;
public static final int THREE = 0x04;
public static final int FOUR = 0x08;
public static final int FIVE = 0x10;

等等

然后你可以这样做:

public static void main(String [] args) {
Example.multiValueExample(Values.ONE | Values.THREE | Values.FIVE);
}

public static void multiValueExample(int values){
if ((values & Values.ONE) == Values.ONE) {
}

if ((values & Values.TWO) == Values.TWO) {
}

// etc.
}

关于java - 如何使用按位运算符将多个整数值传递给 Java 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com