8

哪个是更好的实践 Boolean.valueOf()Java 1.5 autoboxing创造Booleanbooleans为什么?

4

1 回答 1

14

自动装箱由编译器boolean透明地转换为Boolean.valueOf()

boolean b = true;
Boolean bb = b;

被翻译成:

iconst_1
istore_1            //b = 1 (true)
iload_1             //b
invokestatic    #2; //Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
astore_2            //bb = Boolean.valueOf(b)

使用您认为更有用和更易读的任何一个。由于 usingBoolean.valueOf()除了额外的打字之外没有给你任何东西,你应该瞄准自动装箱。


当您考虑相反的转换 - 从Boolean到时,情况会变得复杂boolean。这个时间Boolean.booleanValue()是编译器为你透明调用的,理论上可以导致NullPointerException.

于 2012-07-26T16:38:35.083 回答