gpt4 book ai didi

java - 如何修复 pmd 违规 "NullAssignment"?

转载 作者:行者123 更新时间:2023-12-01 14:20:44 26 4
gpt4 key购买 nike

PMD 报告以下代码的 NullAssignment,修复它的最佳实践是什么?

将对象分配给 null 是一种代码味道。考虑重构。

下面的代码不是我写的,我还有一个疑问为什么要创建一个临时定时器实例,然后将这个实例分配给定时器? startTimerstopTimer 将在多线程上下文中使用。

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com