私は最近いくつかのコードで働いていた、と同僚が見直したとき、私はダブル値の手動ボクシングを削除して間違いを犯したと言われました。私はそれについて考えなかったが、IntelliJは私がそれを変更することを勧めたので、私はそうした。Javaの手動ボクシング対プリミティブ番号のオートボクシング
Boxedプリミティブがどのようにnullになる可能性があるのか、autounboxingに依存すると(他のものの中でも)nullポインタの例外が発生する可能性があることについて、この同僚がEffective Java(2nd Edition)221ページを指摘しました...この場合、私は手作業によるボクシングを取り除いて、コンパイラがそれに対処するようにしていました。
なぜ、それは重要ですか?パラメータとしてDouble
が必要なメソッドがあり、以前はnew Double(5.0)
を渡していましたが、代わりに5
に変更すると、どのような影響がありますか?
何も変更しないでください。コンパイラは 'Double'パラメータを値 '5'で' Double.valueOf(5) 'に置き換えます。 'Double' *はnullでもかまいませんが、もしあなたが' double'を渡していれば、それはできません。 –
IntelliJが手動ボクシングを削除することを推奨する理由はありますか? – agent154
異なる動作をすることができるオーバーロードされたメソッドまたはコンストラクタがありますか? –