PMD报告NullAssignment
以下代码,修复它的最佳实践是什么?
将对象分配给 null 是一种代码味道。考虑重构。
下面的代码不是我写的,我也有一个疑问为什么要创建一个临时定时器实例,然后将这个实例分配给定时器?startTimer
and stopTimer
将在多线程上下文中使用。
private Timer timer;
private void startTimer() {
if (timer == null) {
Timer aTimer = timerService.createTimer(DEFAULT_TIMER_VALUE, null);
aTimer.setListener(this);
timer = aTimer;
}
}
private void stopTimer() {
if (timer != null) {
Timer aTimer = timer;
timer = null;
aTimer.cancel();
aTimer.setListener(null);
}
}
public void start() {
synchronized(..) {
startTimer();
}
}
public void stop() {
synchronized(..) {
stopTimer();
}
}
在搜索其他信息时到达这篇文章,并注意到以前的答案都不正确(IMO)。
所提供的代码中进行空分配的原因显然与垃圾收集无关,而是与能够停止并重新创建新计时器有关,一次只能有一个计时器。
我不认为有任何理由使用临时变量stopTimer
方法,但看起来与原始问题无关。
我想说这段代码很好,而且SuppressWarnings("PMD.NullAssignment")
可以添加注释以避免违规; PMD 只是强调空赋值通常只是一种味道,而不是任何问题的事实。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)