我有一个Java gettor方法,如下所示:
import java.util.Date;
//...
public Date getSomeDate() {
return someDate;
}
和Findbugs报告这暴露了一个可变对象:“可以通过返回对可变对象的引用来公开内部表示”。 我将代码更改为:
import java.util.Date;
//...
public Date getSomeDate() {
return new Date(someDate.getTime());
}
但Findbug仍然报告了同样的漏洞。我还能做些什么来抑制/解决这个问题?我在IntellJ 10 Findbugs插件中运行Findbugs 1.3.9。
答案 0 :(得分:11)
我刚刚意识到Findbugs分析编译的代码(.class
文件),而不是源代码。在重建并重新运行Findbugs后,问题就消失了。
答案 1 :(得分:-1)
不,我们需要使用以下代码克隆该对象:
public Date getSomeDate() {
return new Date(someDate.getTime()).clone();
}