我想知道下面的代码是否适用于任何场景?
Object value = attValue.getValue(); // Returns an Object, might contain an Integer
if (value instanceof Integer) {
if (mAccount.getValue() != value) { // mAccount.getValue() return int
// Do something here
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于我的Android工作室,但不适用于其他PC.是什么让它对我有用?
Jon*_*eet 12
是的,这是完全可行的,因为自动装箱的方式可以保证适用于较小的值,并且允许使用较大的值.例如,保证打印为true:
Object x = 5;
Object y = 5;
System.out.println(x == y);
Run Code Online (Sandbox Code Playgroud)
这可能打印为true,但不保证:
Object x = 10000;
Object y = 10000;
System.out.println(x == y);
Run Code Online (Sandbox Code Playgroud)
我肯定会尽量不依赖于代码中的这一点,部分是因为虽然保证重用-128到127(包括-128到127)范围内的值(参见JLS 5.1.7),但是一些JVM 可以重用更广泛的范围值可能会导致您对代码产生错误的安全感.
在您的情况下,我们不知道您是否看到平台上的差异(还要记住我们谈论的是Android而不是JVM),或者只是当它"工作"时,盒装的价值很小,当它"不起作用"时它不是.
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |