26 자바에서 : int count = (Integer) null; java.lang.NullPointerException을 던집니다. 프로그래머가 이해하기 쉽도록 클래스 캐스트 예외가 발생하지 않는 이유는 무엇입니까? 이 예외가 다른 예외보다 선택된 이유는 무엇입니까? java language-design — 나단 R 소스
46 코드를 실행할 때 Java 런타임은 다음을 수행합니다. Integer 클래스의 오브젝트에 널을 캐스트하십시오. intValue () 메소드를 호출하여 Integer 객체를 int로 개봉하십시오. 널 오브젝트에서 메소드를 호출하면 NullPointerException이 발생합니다. 즉, 문제없이 null을 정수로 캐스트 할 수 있지만 null 정수 개체는 int 유형의 값으로 변환 할 수 없습니다. 편집하다 얼마 전 Stack Overflow에서 관련 질문이있었습니다 . 여기를 참조 하십시오 . — 조르지오 소스
1 Java는 오브젝트를 참조하지 않는 정수 참조로 널을 성공적으로 캐스트합니다. 확인되지 않은 상태는 참조에 유효한 상태이기 때문에 괜찮습니다. 수행 할 수없는 기존 객체가 아닌 메소드를 호출하는 것입니다. 캐스트를 수행하는 (Integer)null것은 Integer 변수를 선언 한 다음 새로운 (또는 기존의) Integer 객체 인스턴스를 할당하지 않는 것과 같습니다. — 툴 린즈 코르도바 소스
-1 를 언 박싱하려면 Integer로 int예에서 int i = new Integer(15);, i실제로 같다 new Integer(15).intValue() i = (Integer) o; 어디 Object o = 15와 o = Integer.valueOf(15);같지만 i = null; 는를 던지기 NullPointerException때문에 i를 null.intValue()던집니다 NullPointerException. — 자바 프로디지 소스 2 거의 2 년 전에 받아 들여진 대답은 거의 같은 설명을 제공하지만 더 명확합니다. 이 답변은 Java 5+에도 맞지 않습니다. 이제 valueOf()복싱을위한 새 인스턴스를 만드는 대신 팩토리 메소드를 사용합니다 .
valueOf()
복싱을위한 새 인스턴스를 만드는 대신 팩토리 메소드를 사용합니다 .