作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
PMD 报告以下代码的 NullAssignment
,修复它的最佳实践是什么?
将对象分配给 null 是一种代码味道。考虑重构。
下面的代码不是我写的,我还有一个疑问为什么要创建一个临时定时器实例,然后将这个实例分配给定时器? startTimer
和 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)。
所提供代码中的 null 分配的原因显然与垃圾收集无关,而是与能够停止并重新创建新计时器有关,一次只能有一个计时器。
我没有看到在 stopTimer
方法上使用临时变量的任何原因,但看起来与原始问题无关。
我想说这段代码很好,可以添加 SuppressWarnings("PMD.NullAssignment")
注释以避免违规; PMD 只是强调空赋值通常是一种味道,而不是任何问题的事实。
关于java - 如何修复 pmd 违规 "NullAssignment"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17590281/
与其说这是一个技术问题,不如说是一个政策问题。 开发应用程序时,如果附属机构提供的链接构成您内容的一部分,您是否可以显示该链接?例如,专门用于从 Affiliate Window 查找特定流派黑胶唱片
我是一名优秀的程序员,十分优秀!