문제

나는 추악한 보일러 플레이트 코드를 많이 절약하기 때문에 자바에서 자동 박스의 열렬한 팬입니다. 그러나 숫자 객체가 무일하게 될 수있는 경우 일부 상황에서는 자동 노트 박스가 혼란스러워하는 것을 발견했습니다. Javac 경고가있는 코드베이스에서 자동 노트 박스가 발생하는 위치를 감지하는 방법이 있습니까? Unboxing의 발생 발생을 감지하는 다른 솔루션 (FindBugs 또는 Eclipse 관련 컴파일러 경고와 같은)은 찾을 수 없으므로 감사합니다.

명확히하기 위해 나는 권투에서 경고가 생성되기를 원하지 않습니다.

다음은 혼란스러운 NullPointerExceptions를 유발할 수있는 일부 코드의 간단한 예입니다.

class Test {
    private Integer value;

    public int getValue() {
        return value;
    }
}
도움이 되었습니까?

해결책

Eclipse를 사용하면 구문 콜로 권투 및 Unboxing 작업 (하나 또는 다른 하나는 아닙니다). 나는 그것들이 밝은 빨간색으로 설정했습니다. 어느 쪽이든, 그것은 매개 변수와 인수 일치하는 일치에 조잡했음을 의미합니다.

다른 팁

예. 일식에서 :

환경 설정-> java-> compiler-> 오류/경고-> 잠재적 프로그래밍 문제-> 권투 및 Unboxing 변환

불행히도 없습니다. 이것은 자동 열복 부스 번호의 문제 중 하나입니다. 당신은 할 수 있습니다

  • 다음과 같은 기본값으로 초기화하십시오 private Integer value = 0
  • 널 확인하십시오 return value != null ? value : 0

개인적으로 나는 첫 번째 방법을 선호합니다. 일반적으로 나는 당신이 널 번호를 가지고 있어야하는 경우가 너무 많지 않을 것이라고 생각합니다.

또한 왜 큰 정수를 사용하여 값을 저장하고 있습니까? 당신이 약간의 int 만 반환한다면, 그런 식으로 저장하지 않겠습니까?

나는 이것이 경고 사건이 될 것이라고 의심한다. 이것은 자동 박스의 단점 중 하나입니다.

Joshua Bloch는 그의 저서 "Effective Java"에서이 문제를 해결합니다. 기본적으로 컴파일러는 예상되는 것보다 더 많은 일을하려고합니다. 다시 말해, 이러한 유형의 문제는 사용법과 더 일반적으로 관련되어 있으며 결과적으로 오류가 의미 적으로 말하면서 "오류를 발견"하기가 어렵습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top