私は、un-boxedされている参照がnullになる可能性があるため、自動un-boxingは注意深く行うべきであることを理解しています。オートボクシングに警告としてマークされているのはなぜですか?私はここに欠けているいくつかの落とし穴がありますか?なぜ自動ボクシングは警告としてマークされていますか?
答えて
パフォーマンスの問題(マイクロ最適化の観点から)が期待できない場合は、この警告を安全に無効にすることができます。オートボクシングがここで起こっていることに気付かない場合に備えての表示に過ぎません。 I/Oオーバーヘッド(DBトランザクションまたはディスクアクセスによる)があるビジネスロジックコードでは、自動ボクシングは決して問題になりません。
日食では、それだけでなく、ボクシングの警告をオフにしないでボクシングの警告をオンにすることはできません。それはあなたが(両方ともオフに)オフにすることをお勧めしますsomethingsですか? 私は大学のプロジェクトを行っており、講師は最大の警告レベルで警告をゼロにすることを望んでいます(警告を選択的に無視することができます) – Artium
@Artiumあなたのケースでは、明示的な変換を使用して、 'int i = Integer.intValue () 'と' Integer I = new Integer(i) 'となります。その後、コンパイラは不平を言うことはありません。 – stacker
これらの警告を分離することに関連するバグがあります:https://bugs.eclipse.org/bugs/show_bug.cgi?id=163065 – Kyle
私はこのEclipseの警告を無効にしようとしていましたが、次の記事では私には考慮しませんでした。私はまだ完全にはわかりませんが、オートボクシングを避けるだけの理由があるように見えます。これはおそらく、かなりあいまいなバグですが
https://effective-java.com/2010/05/the-advantages-and-traps-of-autoboxing/
はオートボクシングは、コレクションの「削除」の方法に関連したバグのために貢献することができます。
乱数ジェネレータを使用して、ArrayListから削除するアイテムのインデックスを選択したときに、このバグが発生しました。ジェネレータは長いプリミティブを返しました。私は誤ってList.remove(int index)のパラメータとして使用しようとしました。コンパイラはlongをLongに変換して、List.remove(Object o)で使用しました。これはまったく異なる動作をもたらしました。幸いにも、assertステートメントがエラーを素早くキャッチしました。
"remove"というこの問題のこの議論によれば、他の誰かが、intが予想外にIntegerのように動作するような同様の問題に遭遇しました。 https://stackoverflow.com/questions/104799/why-arent-java-collections-remove-methods-generic (ScArcher2さんのコメントを参照)
これはオーバーロードされた関数の予想される動作であり、バグではありません。 –
- 1. 警告なしで自動公開されましたか?
- 2. マニュアルで警告が表示されていませんが、自動で警告が表示されます
- 3. Java:ここで自動ボクシングが行われないのはなぜですか?
- 4. なぜ、Javaの自動ボクシングは、自動ボクシングタイプのメソッドのメソッド呼び出しにまで拡張されていないのですか?
- 5. プロトコルメソッドが指定されていないと警告が表示されないのはなぜですか?
- 6. この警告は、警告によってsurpressedされていない= FALSE
- 7. 警告が表示されないのはなぜですか。
- 8. なぜGoogleクロージャーコンパイラは配列の長さについて警告しますか?
- 9. 「要件は既に満たされています」という警告を表示しない警告
- 10. なぜ私はこの警告を持っていますか?
- 11. 自動クローズ警告
- 12. @discardableResultとマークされた関数の未使用結果をコンパイラが警告するのはなぜですか?
- 13. 私のvimのJSHintは警告として 'yield'をマークします。
- 14. GCCは解放されていないヒープブロックについて警告します
- 15. なぜ "_path"ルートヘルパーはhtml_safeとしてマークされていない文字列を返しますか?
- 16. 打ち鳴らす++警告: "警告:不明な警告オプション '-Wno-多分、初期化されていない'"
- 17. なぜCursor.requery()は「廃止予定」とマークされていますか?
- 18. 私の警告から警告を受けないのはなぜですか?
- 19. なぜ私は持っています: `警告:ブランチ 'アカウンティング'はまだマージされていません。
- 20. 型パラメータとして "size_t"、キャスト警告が再生されない
- 21. なぜこれらは不要なインポートとしてマークされていますか?
- 22. 警告メッセージ: `...`で:無効な因子レベル、NAは、私は、この警告メッセージが表示されました、なぜ私は理解していない
- 23. リアクション警告:「制御されない非表示の入力を変更しています」なぜですか?
- 24. オブジェクトstd :: vectorが宣言されていても使用されていないときにコンパイラが警告を出さないのはなぜですか?
- 25. 警告が表示されるのはなぜですか?
- 26. なぜオブジェクトはそれ自身で動いていますか?
- 27. Javaが強制変換と自動ボクシングをサポートしないのはなぜですか?
- 28. Xcodeでエラーとして警告されている警告を無効にするには
- 29. varを使用して宣言していないと、resharperのデフォルトの警告はなぜですか?
- 30. num ++はpythonの構文エラーとしてマークされています - なぜですか?
私の使い慣れたEclipseは、自動ボクシングとアンボクシングの警告を表示しません。どのようなタイプ/バージョンのEclipseを使用していますか? – LanguagesNamedAfterCofee
[プロジェクトのプロパティ] - > [Javaコンパイラ] - > [エラー/警告] - >潜在的なプログラミング上の問題で、これを有効にすることができます。 – Artium
参照:https://bugs.eclipse.org/bugs/show_bug.cgi?id=163065ボクシングをアンボクシングから分離する機能要求です。 – Kyle