gpt4 book ai didi

Java 令人困惑的三元 Sonar 违规问题

转载 作者:行者123 更新时间:2023-12-05 01:31:22 25 4
gpt4 key购买 nike

Sonar 报告了以下代码的混淆三元违规行为:

package com.example.dto;

import java.util.Date;

public class ShiftTemplateUserDTO {
private Date breakStartTime;
private Date breakEndTime;

public Date getBreakStartTime() {
return breakStartTime != null ? new Date(breakStartTime.getTime()) : null;
}

public void setBreakStartTime(Date breakStartTime) {
this.breakStartTime = breakStartTime != null ? new Date(breakStartTime.getTime()) : null;
}

public Date getBreakEndTime() {
return breakEndTime != null ? new Date(breakEndTime.getTime()) : null;
}

public void setBreakEndTime(Date breakEndTime) {
this.breakEndTime = breakEndTime != null ? new Date(breakEndTime.getTime()) : null;
}
}

我尝试更新代码以添加 if/else 条件,但 Sonar 仍然提示相同的规则,我做错了什么?

  public Date getBreakStartTime() {
if (breakStartTime != null) {
return new Date(breakStartTime.getTime());
} else {
return null;
}
}

public void setBreakStartTime(Date breakStartTime) {
if (breakStartTime != null) {
this.breakStartTime = new Date(breakStartTime.getTime());
} else {
this.breakStartTime = null;
}
}

最佳答案

不要在三元运算符中使用否定条件。尝试替换这个:

return breakStartTime != null ? new Date(breakStartTime.getTime()) : null;

用这个:

return breakStartTime == null ? null : new Date(breakStartTime.getTime());

这同样适用于您的 if-else 逻辑。替换为:

if (breakStartTime != null) {
return new Date(breakStartTime.getTime());
} else {
return null;
}

用这个:

if (breakStartTime == null) {
return null;
} else {
return new Date(breakStartTime.getTime());
}

关于Java 令人困惑的三元 Sonar 违规问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66431059/

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