Java Automatic Unboxing-コンパイラ警告はありますか?
-
19-09-2019 - |
質問
私はJavaでの自動ボクシングの大ファンです。それは多くの醜いボイラープレートコードを節約しています。ただし、数値オブジェクトがnullである可能性のある状況によっては、自動不動が混乱していることがわかりました。 Javac警告を備えたコードベースで自動不動産が発生している場所を検出する方法はありますか?私が見つけることができないので、解放のみの発生のみ(FindBugsやEclipse固有のコンパイラ警告など)を検出する他のソリューション(FindBugsまたはEclipse固有のコンパイラ警告など)が評価されます。
明確にするために、ボクシングで警告を生成したくない - ボクシングのみ。
混乱するnullpointerexceptionsを引き起こす可能性のあるコードの簡単な例を以下に示します。
class Test {
private Integer value;
public int getValue() {
return value;
}
}
解決
Eclipseでは、構文色のボクシングとボクシング操作(どちらかではありません)を使用することができます。私はそれらを明るい赤に設定しています:どちらかが起こった場合、それは私が一致するパラメーターと議論でずさんだったことを意味します。
他のヒント
うん。 Eclipse:
設定 - > java->コンパイラ - >エラー/警告 - >潜在的なプログラミングの問題 - >ボクシングとボクシング変換
残念ながら、ありません。これは、自動解除番号の問題の1つです。あなたはできる
- そのようなデフォルト値に初期化します
private Integer value = 0
- ヌルを確認してください
return value != null ? value : 0
個人的には最初の方法が好きです。一般的に、私はあなたがあなたがヌル番号を持っているべきであるあまり多くのケースを持っていないと思います。
また、なぜあなたは価値を保存するために大きな整数を使用しているのですか。少しintを返しているだけなら、そのように保存してみませんか?
これが警告ケースになるとは思わない。これは、自動ボクシングの癖の1つです。
ジョシュア・ブロッホは、彼の著書「Execful Java」でこれに取り組んでいます。基本的に、コンパイラはあなたのために期待されることをもっとやろうとしています。言い換えれば、このタイプの問題は使用法により一般的に関連しており、その結果、エラーが意味するように、単にそこにないように「エラーを見つける」ことは困難です。