我在Android中将一堆常量组合在一起。
例如,A = 1,B = 2,C = 3
然后我使用一个名为setParams(A | B | C)的函数。
Java将其转换为一个最终的int值,比如X.
如果我只能访问整数常量的最终组合值,如何从组合值X中获取单个值?
答案 0 :(得分:2)
除非有一个特定的规则来管理分解,否则你不能这样做。
在您的情况下,由于C
与A | B
相同,因此您无法分辨。
但是,如果A
,B
和C
分别为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了。