2013-05-31 5 views
2

은 내가 'UNSPECIFIED_PARAMETER_KEY은'긴 PVT 정적이며, '값이'긴 또한 코드자바 자동 권투 조건 연산자는 수중 음파 탐지기에서

public Long getValue(FieldType fieldType) { 
    Long value = paramLevelMap.get(fieldType); // ok returns Long not long 
    return value == null ? UNSPECIFIED_PARAMETER_KEY : value; // complaints here 
    } 

의 주요 위반 경고를 참조하십시오.

박스형 값은 박싱 후 즉시 두번째 줄에 불평

그 reboxed입니다. 나는 그것을 이해하지 못했다. & 원시적 인 long이 어떻게 대응하는 클래스 객체로 변환 되는가? 그리고 다시?

답변

6

두 번째와 세 번째 피연산자가 하나의 프리미티브와 하나의 해당하는 상자 버전으로 구성되는 삼항 형 반환 형식 (또는보다 정확하게는 조건부)은 프리미티브의 반환 형식입니다.
번째 피연산자 여기 이후

, UNSPECIFIED_PARAMETER_KEY (조건 연산자의 유형의 전체 분석 the Java Specifications 15.25 본다. 들어), 자바 value을 언 박싱하는, valueLong이고, 제 long이며 표현을 평가하기 위해 long으로

이 경우 Long이 반환되므로 value은 즉시 리 박스됩니다.

UNSPECIFIED_PARAMETER_KEYLong으로 변경하여이 문제를 해결할 수 있습니다.

+0

는 ques ..의 코드를 편집했습니다. 값이 길지 않습니다. – Lav