以前、int フィールドを使用して DTO クラスを作成し、それらを使用して数週間の開発を行った後、これらのフィールドの型を int から Integer に変更するよう求められました。単純に宣言の型を変えるのは無理だと思っていたのですが、数回の修正でコンパイルエラーはなくなりました。そんなに簡単ですか?
質問する
177 次
3 に答える
4
はい、オートボクシングが原因です。http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.htmlを参照してください。
ただし、Integer オブジェクトが null の場合、Integer オブジェクトを int に暗黙的に変更することによって発生する可能性がある null ポインター例外に注意してください。
于 2012-11-28T15:50:42.113 に答える
1
Java 5 は Autoboxing/Unboxing を提供するため、コンパイルの問題は発生しません。
int (プリミティブ データ型) から Integer への変換はオートボクシングと呼ばれ、その逆はアンボクシングと呼ばれます。
于 2012-11-28T15:52:36.140 に答える
0
私はむしろこれをしたくありません。ボックス タイプがプリミティブよりも劣っている場合があります (たとえば、それらはオブジェクトであるため、コレクションに入れることができます) が、すべてのプリミティブをそのボックス タイプに置き換えてもほとんど効果がありません。他の人がすでに述べたように、null 値を確認する必要があります。また、新しいオブジェクトの作成も非常に簡単に監視できることに注意してください。
于 2012-11-28T15:55:32.127 に答える