2017-02-21 7 views
5

私は(デモのために簡略化)次のJava 8のコードがあります。Javaで不要なアンボックス - コードをどのようにリファクタリングするのですか?

public Double fooBar(int a) { 
    return Double.valueOf(a); 
} 

を今のIntelliJ IDEAは、私がreturn文で不要なボクシングを持っていることを私に伝えます。 adoubleタイプであればこの問題を理解できますが、intの場合は、doubleに変換するボクシングが必要だと感じています。

私は現在見ていないこのコードをリファクタリングする良い方法がありますか、またはこの時点でIntelliJ IDEAからのエラーメッセージが単に最適ではありませんか?あなたはAlt-Enterキーを提案解像度「ボクシングを削除」を使用することを使用する場合は、ヘルプ

+1

はきっと 'int'値は' double' –

+0

@ScaryWombatに含まれていることができます:私はあなたのコメントを理解していません。あなたは明示的なボクシングステートメントを削除することができますか?私の理解には私はできません。 –

+2

は単に 'a'を返します –

答えて

7

ため

おかげで、結果はこれです:この場合

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

intからdoubleへの変換は非常にあります明示的に、同時に手動のボクシングを避けながら。

+0

私はそれが好きです。このAlt-Enterトリックはどのようにしましたか?私にとっては、このメッセージはツールヒントテキストに過ぎず、Ctrl + F1キーを押して展開することができます。 –

+0

カーソルをエラーに配置する必要があります。関連するコードに位置するまでf2を押し、あなたが 'return a;'(キャストなし)を持っている場合は、 "互換性のない型"(Double vs int)というエラーがあります。 – vikingsteve

+0

@ScaryWombat – vikingsteve

6

プリミティブな領域にはいかがですか?

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

戻り値の型を 'Double'から' double'に変更すると何も壊れませんか? – vikingsteve

+0

@vikingsteve何が壊れますか?戻り値は常にDoubleに代入することができ、その代入時には自動的に戻ります。戻り値をdoubleとして保持する方がはるかに効率的です – auval

+0

ここではメソッドの戻り値の型を変更することはできません。ところで、それは実際には多くのことを壊すかもしれません - オートボクシングはそれほど簡単ではなく、必ずしも常に「ただ仕事」ではありません。 –

関連する問題