我想知道为什么这个代码片段编译并运行
private BusRoute readRouteCursor( final Cursor c )
{
final BusRoute result;
final int count;
if ( c == null || ( count = c.getCount() ) < 1 )
{
result = null;
}
else
{
/*
* Reads cursor
*/
}
return result;
}
我让它工作得很好,但是当我停下来思考它时,我想知道为什么,因为变量count
是,但如果满足子句final
的第一个条件,它可能不会被设置。if
它是否有效,因为编译器足够聪明,可以看到从那时count
起没有任何用途,并且根本不需要初始化它?