2012-07-26 2 views

답변

12

오토 박싱은 투명 컴파일러에 의해 Boolean.valueOf() 변환됩니다 : 당신이 더 유용하고 읽을 찾을 중

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) 

사용 :

boolean b = true; 
Boolean bb = b; 

가 변환됩니다. Boolean.valueOf()을 사용하면 여분의 입력을 제외하고는 아무 것도주지 않으므로 autoboxing을 목표로해야합니다. Boolean에서 boolean에 - 당신이 반대의 변환을 생각하면


상황이 복잡하게한다. 이번에는 Boolean.booleanValue()이 컴파일러에 의해 투명하게 호출되어 이론적으로는 NullPointerException이 될 수 있습니다.

+0

유지 관리가 중요합니다. 비록 그들이 동일한 바이트 코드로 컴파일되지 않을지라도, 가독성이 구동 요소가 될만큼 충분히 동등 할 것입니다. – corsiKa

+0

필자는 개인적으로 명시 적 valueOf()를 선호하므로 래퍼 유형으로의 변환이 발생한다는 것을 분명히 알 수 있습니다. 물론 이것은 개인적인 취향입니다. – Durandal

+0

@Thomasz 어떻게 NPE를 일으킬 수 있습니까? 나는 그 부분을 얻지 못한다. – Geek

관련 문제