【发布时间】:2009-03-15 15:52:20
【问题描述】:
在应用程序框架中,我经常看到允许您将多个 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 值?
【问题讨论】:
-
请澄清。我不明白。这些不是多个值。价值观.ONE |价值观。三 | Values.FIVE = 0x7f020006,对吧?未命名位的用途是什么?
-
您是否有特定原因要使用按位运算? enum/EnumSet 解决方案更清晰,更类似于 Java。
标签: java function bit-manipulation bitwise-operators integer