Java “无法解决”;可以通过返回对可变对象的引用来公开内部表示;

Java “无法解决”;可以通过返回对可变对象的引用来公开内部表示;,java,sonarqube,Java,Sonarqube,SonarQube不断报告规则“可能通过返回对可变对象的引用来公开内部表示”的问题 我根据a修复了它,但SonarQube仍然提出了这个问题: public Date getDatime(){ return (Date)this.datime.clone();//IJTI-316 // .getDatime() may expose internal representation by returning *.datime } 如何解决/避免此问题?克隆操作执行浅层复制,这意味

SonarQube不断报告规则“可能通过返回对可变对象的引用来公开内部表示”的问题

我根据a修复了它,但SonarQube仍然提出了这个问题:

public Date getDatime(){
    return (Date)this.datime.clone();//IJTI-316
    // .getDatime() may expose internal representation by returning *.datime
}

如何解决/避免此问题?

克隆操作执行浅层复制,这意味着日期的大多数实例变量在两个实例之间共享。要完全解决这个错误,您需要在常规意义上创建一个全新的对象

也许:

return new Date(this.datime.getTime());

您使用哪一版本的SonarQube?您为Java分析安装了哪些插件?在eclipse中,我使用的是Sonarint。SonarQube版本6.1 set方法如何:this.datime=newdate(datime.getTime());它仍然保留这个问题!当然是这样,您只是用另一个内部表示替换您的内部表示并返回它。