私はこのような非常に単純なJavaコードを持っています(これは単なる抜粋です):
for(;;)
{
AnObject object = null;
for(AnObject elem : list) // where the list is of the type List<AnObject>
{
if(<some dynamic condition goes here>)
{
object = elem;
}
}
Log.v(TAG, object.property); // was initially omitted, added for the answer
// more code skipped for simplicity
if(object == null)
{ //
break; //
} // this all is marked as dead code
}
Eclipseでは、コメント付きのフラグメントはデッドコードとしてマークされます。なんで?final
条件に要素はありません。object
変数は、サイクルの最初の部分を除いて、定数nullのどこにも割り当てられません。ただし、その後は通常はオーバーライドされますが、常に発生するとは限りません。はobject
、nullでも非nullでもかまいません。
私は何かが足りないのですか?
答え
さて、私は答えを見つけました、そしてそれを示すために私は私の例に1行のコードを追加しなければなりません、それはコードの抜粋を単純化しようとしたときに誤って省略しました、しかしそれは重要です。行は次のとおりです。
Log.v(TAG, object.property);
したがって、オブジェクトはnull以外である必要があります。そうでない場合、例外によってコードに到達できません。この行はデバッグ目的で一時的に追加されたため、私の考慮から外れました。