声纳规则squid:S2384在此代码中引发了一个问题:
public Date getCreatedOn() {
return createdOn;
}
遵循规则Mutable members should not be stored or returned directly
我明白我们不应该返回原文,而是应该返回该对象的副本。
另一方面,Sonar没有就此代码提出问题:
public Date getCreatedOn() {
return this.createdOn;
}
是什么让这段代码与众不同?
我们是否在第二种情况下没有退回原件?
答案 0 :(得分:10)
SonarJava(SonarQube平台中使用的Java静态代码分析器)检测到此问题的方式存在缺陷。我创建了以下故障单以改进实现,以涵盖使用this
返回字段时的情况。
答案 1 :(得分:-2)
您分享的代码是相同的。但你分享的链接是不同的。
如果一个类具有引用类型的数据成员并且它是可变的,并且当我们直接返回时,我们引用相同的对象,因此可以修改它。最好用另一个对象返回一个对象的值。