2017-02-21 8 views
5

나는 (데모 간체) 다음 Java (8) 코드가 있습니다. adouble 유형 인 경우이 문제를 이해할 수 있지만 int에 대해서는 double으로 변환해야하는 복싱이 필요하다고 느낍니다.자바에서 불필요한 unboxing - 코드를 리팩터링하는 방법?</p> 이제 <pre><code>public Double fooBar(int a) { return Double.valueOf(a); } </code></pre> <p>하게 IntelliJ IDEA 내가 return 문에서 불필요한 복싱을 가지고 나에게 말한다 :

현재이 코드를 리팩토링하는 좋은 방법이 있습니까? 아니면 현재 IntelliJ IDEA의 오류 메시지가 최적이 아닌 것입니까?

public Double fooBar(int a) { 
    return (double) a; 
} 

이 경우 doubleint에서 변환이 매우이다 : 도움을

감사

+1

확실히 'int'값이 'double'에 포함될 수 있습니다. –

+0

@ SkaryWombat : 귀하의 의견을 이해할 수 없습니다. 내가 명시적인 권투 진술을 삭제할 수 있다는 뜻인가요? 내 이해에 나는 할 수 없다. –

+2

단순히'a'를 반환 –

답변

7

당신이 사용하는 경우 제안 된 해결 방법 "복싱 제거"를 사용하여 고도를 입력, 결과는 이것이다 명시 적으로, 동시에 수동 복싱을 피하는 동안.

+0

나는 그것을 좋아한다. 어떻게이 Alt-Enter 트릭을 했습니까? 나에게이 메시지는 툴팁 텍스트 일 ​​뿐이므로 Ctrl + F1을 눌러 확장 할 수있다. –

+0

커서를 해당 코드에 위치 할 때까지 f2를 누른 다음 커서를 오류 위치에 놓은 다음 alt- 입력이 작동해야합니다 – vikingsteve

+0

@ScaryWombat'return a;'(캐스트 없음)에 "호환되지 않는 유형"(Double vs int) 오류가있는 경우. – vikingsteve

6

전체적으로 원시 영역에 머무는 것이 어떻습니까?

public double fooBar(int a) { 
    return a; 
} 
+0

반환 형식을'Double'에서'double'으로 바꾸면 아무것도 망가 뜨리지 않을까요? – vikingsteve

+0

@vikingsteve 어떻게 깨뜨릴 수 있습니까? 반환 값은 항상 Double에 할당 할 수 있으며 할당시 자동 상자에 나타납니다. 또는 반환 값을 두 배로 유지하면 훨씬 효율적입니다. – auval

+0

메서드 반환 유형을 여기에서 변경할 수 없습니다. 그건 그렇고 : 그게 실제로 많은 것들을 망칠 수도 있습니다 - 자동 권투는 그렇게 단순하지 않으며 항상 '그냥 일하는'것은 아닙니다. –