抑制Java Findbugs错误(EI_EXPOSE_REP)

问题描述 投票:6回答:2

我有一个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。

java date findbugs
2个回答
11
投票

我刚刚意识到Findbugs分析了编译代码(.class文件),而不是源代码。在重建和重新运行Findbugs之后,问题就消失了。


-1
投票

不,我们需要使用以下代码克隆该对象:

public Date getSomeDate() {
  return new Date(someDate.getTime()).clone();
}
© www.soinside.com 2019 - 2024. All rights reserved.