m_tipView.setText(...)操作前,有必要加if (null != m_tipView)判定吗?private TextView m_tipView;
//设置提示控件
public void setTextView(TextView textView) {
m_tipView = textView;
}public void setMode(int newMode) {
if (READY == newMode) {
m_tipView.setText(R.string.mode_ready);
m_currentMode = READY;
}
else if (RUNNING == newMode) {
m_tipView.setText(null);
m_currentMode = RUNNING;
}
else if (PLAYER1_LOST == newMode) {
m_tipView.setText(R.string.player1_lost);
m_currentMode = READY;
}
else if (PLAYER2_LOST == newMode) {
m_tipView.setText(R.string.player2_lost);
m_currentMode = READY;
}
else {
Log.v(TAG, "m_currentMode is an unknown status");
}
}

解决方案 »

  1.   

    如果确认你的程序中  它肯定不为 null, 就不需要了 ,如果存在不确定性 ,还是判断了
      

  2.   

    如果不加的话很有可能使你的程序出现空指针异常,如果要是能保证m_tipView不为空就没有必要加if语句了,但我感觉最好还是加上的好,这样程序的健壮性比较强。
      

  3.   

    你的结构有点像注入的,如是,则对象创建时自动调用setTextView注入了m_tipView,那就不用if了。但如果setTextView只是一个普通方法,那m_tipView就没有保障了。如果m_tipView==null,那调setMode就会报错,从你的结构上来看,应该是希望这样的结果的--不用if,就是要它报错。你这种结构一般来说,你的m_tipView作为类的字段,应该是初始化一次,然后就应不再变化的--这个类的使用规则,那么setMode如果因此报错,则表示使用这个类的地方初始化动作不全的设计错误。如果现结构不变,那你setTextView注释应该注明“类创建时,就必须立即调用它”(类的注释也应注明这事),并将if判断加在setTextView中。这种字段是类的必初始化变量的话,应该考虑在构造函数的参数送进来,并在那里判断是否为null,而不要搞setTextView这个好像是可调可不调的方法--这是一种我个人认为是错误的程序结构,但非常多的人会这样设计,然后就老是出错,并不知所措。