组合整数常量如何在Android中运行?

时间:2016-07-06 14:18:13

标签: java android constants

我在Android中将一堆常量组合在一起。

例如,A = 1,B = 2,C = 3

然后我使用一个名为setParams(A | B | C)的函数。

Java将其转换为一个最终的int值,比如X.

如果我只能访问整数常量的最终组合值,如何从组合值X中获取单个值?

2 个答案:

答案 0 :(得分:2)

除非有一个特定的规则来管理分解,否则你不能这样做。

在您的情况下,由于CA | B相同,因此您无法分辨。

但是,如果ABC分别为1,2和4(你能看到模式吗?),那么你可以使用按位算术来提取来自X的成分。事实上,这样做很常见。

答案 1 :(得分:1)

我想知道为什么认为java"必须"跟踪事物。那为什么会这样?

问题是:如果您在源代码中使用变量,那么当然,这些变量存在于其范围内,例如:

void foo() {
  int a=5, b=3;
  int c = a * b;
  do something else with a and b
  return c;

当然,即使在计算出c之后,a和b仍然存在"并且可以检查他们的价值观。但是一旦该方法返回,关于a,b和c的任何知识都消失了。然后唯一的事情"离开"是该方法返回的int值15。

(仅用于记录:在上面的例子中,编译器会执行常量折叠,并且在该方法的字节代码中,你甚至找不到a,b, c了。