Java Findbug不可变日期修复不起作用

Java Findbug不可变日期修复不起作用,java,immutability,encapsulation,getter-setter,findbugs,Java,Immutability,Encapsulation,Getter Setter,Findbugs,我有maven findbug插件版本2.5.4,在我的代码中显示错误: .getDateRlpx()可以通过返回Price.dateRlpx来公开内部表示 .setDateRlpx(日期)可以通过将外部可变对象存储到Price.dateRlpx中来公开内部表示 但是,在我的代码中,我使用: public Date getDateRlpx() { return DateUtil.immutableDate(dateRlpx); } public void setDateRlpx(fi

我有maven findbug插件版本2.5.4,在我的代码中显示错误:

.getDateRlpx()可以通过返回Price.dateRlpx来公开内部表示
.setDateRlpx(日期)可以通过将外部可变对象存储到Price.dateRlpx中来公开内部表示
但是,在我的代码中,我使用:

public Date getDateRlpx() {
    return DateUtil.immutableDate(dateRlpx);
}

public void setDateRlpx(final Date dateRlpx) {
    this.dateRlpx = DateUtil.immutableDate(dateRlpx);
}
我的不可更改日期:

public static Date immutableDate(final Date sourceDate) {
    if (sourceDate == null) {
        return null;
    }
    return new Date(sourceDate.getTime());
}

为什么findbug会显示此错误?我创建了一个新的日期对象。我甚至尝试了简单的return
newdate(dateRlpx.getTimes())
,但它也不起作用。我找不到任何解决方案。

是的,Thomas是对的,这是环境问题,特别是从IDEA运行tomcat服务器时,它以某种方式阻止findbug检查固定的源代码,而是检查了目标目录或war中的源代码。我没有确定检查它。所以现在所有的工作和FIDbug都同意新的日期(日期。GETTIMEY())是一个解决方案:

这并不能真正回答你的问题(见下文),但是作为额外的评论:如果你可以,考虑升级到java 8(这与以前版本不同,它提供了不可变的日期和时间核心类)。当我尝试你的例子时,FindBugs工作正常,并且没有显示警告。Maven FindBugs插件2.5.4使用FindBugs 2.0.3,我使用FindBugs 2.0.2进行了测试。因此,除非它是2.0.3中引入的bug,否则它就是您的环境的问题。也许它以某种方式向您显示了旧的错误消息或其他信息?如果您还不能迁移到Java 8,您仍然可以使用它所基于的JodaTime。