デバッグ中に、到達不能なコード フラグメントが発生することがあります。警告を抑制する方法はありますか?
4 に答える
Java はこのようなデバッグを (プリミティブに) サポートしており、単純なif
ブール定数ではそのような警告が生成されません (実際、評価が false の場合、コンパイラは条件付きブロック全体を削除します)。したがって、次のことができます。
if(false) {
// code you don't want to run
}
同様に、デバッグのために一時的に早期終了を挿入する場合は、次のようにします。
if(true) { return blah; }
また
if(true) { throw new RuntimeException("Blow Up!"); }
また、Java 仕様では、常に偽の条件付きブロックはコンパイル時に削除され、IIRC では常に真のブロックは条件が削除されることが明示的に宣言されていることに注意してください。これには次のものが含まれます。
public class Debug
{
static public final boolean ON=false;
}
...
if(Debug.ON) {
...
}
どのコンパイラでもこれを行う唯一の方法は@SuppressWarnings("all")
.
Eclipse を使用している場合は、 を試してください@SuppressWarnings("unused")
。
Java言語仕様によると:
ステートメントに到達できないためにステートメントを実行できない場合は、コンパイル時エラーになります。
到達不能なコードをデッド コード (たとえば、 の本体) に変えることができますif (false) {...}
。しかし、エラーであることは言語定義の一部です。
IDE またはコンパイラによって異なります。
とはいえ、少なくとも Eclipse では、これを行う方法はありません。私の Eclipse 構成では、到達不能なコードにより、単なる警告ではなく、コンパイル時のエラーが発生します。また、これは「デッド コード」とは異なることに注意してください。
if (false)
{
// dead code here
}
Eclipse は (デフォルトで) エラーではなく警告を発します。