次の 2 つの方法でコードの使用を確認してください。
方法 1: -
public static void main(String[] args)
{
String img0 = null;
String img1 = "Asdf";
/** Currently there is no code here, that can modify the value of
`img0` and `img1` and Compiler is sure about that.
**/
/** So, it's sure that the below conditions will always execute in a
certain execution order. And hence it will show `Dead Code` warning in
either of the blocks depending upon the values.
**/
if (img0 != null && img1 != null) {
// code;
} else if (img0 != null) {
//code;
} else if (img1 != null) {
//code;
} else {
// code;
}
}
この場合、dead code
ブロックの直前に値を設定しているため、いずれかのブロックで確実に警告が表示されます。コンパイラは、これらのブロックの初期化と実行の間で値が変更されないことを確認しています。
方法 2: -
public static void main(String[] args)
{
String img0 = null;
String img1 = "Asdf";
show(img0, img1);
}
public static void show(String img0, String img1) {
/** Now here, compiler cannot decide on the execution order,
as `img0` and `img1` can have any values depending upon where
this method was called from. And hence it cannot give dead code warning.
**/
if (img0 != null && img1 != null) {
// code;
} else if (img0 != null) {
//code;
} else if (img1 != null) {
//code;
} else {
// code;
}
}
この場合、dead code
Compiler はshow
メソッドがどこから呼び出されるかわからないため、警告は表示されません。img0
およびの値はimg1
、メソッド内の任意の値にすることができます。
- 両方とも の場合
null
、最後else
が実行されます。
- の場合
one of them is null
、いずれかelse if
が実行されます。
- そして、それらのいずれもでない場合
null
、あなたのif
意志は実行されます。
ノート : -
必要に応じて、- 、などwarnings
の特定のケースでは表示されないように Eclipse を構成できます。Unneccessary else
Unused Imports
Windows -> Preferences -> Java (左側のパネル) -> Compiler -> Errors/Warnings に移動します。