Java中Date对象的可变性问题发现程序>>

问题描述 投票:11回答:4

这更多是对12问题的跟进。

如下面的代码所述,]

public Date getSomeDate() {
   return someDate;
}

将为您提供findbug错误issue

建议的解决方案是在getter和setter中都复制Date对象,例如

public Date getSomeDate() {
  return new Date(someDate.getTime());
} 

这是一种好方法还是有其他替代方法?

Java中有没有不可变的日期库可以克服此问题?

这更像是问题1和2的后续步骤。如问题所述,下面的代码public Date getSomeDate(){return someDate; }会给你findbug错误的问题。建议的...

java coding-style findbugs
4个回答
6
投票

JodaTime具有不变的日期。

当然,可以在吸气剂中使用Date构造函数,为什么不可以呢?


7
投票

关注人群...


0
投票

根据您的用例,您可以返回someDate.getTime()而无需将其包装在Date中。


0
投票

请稍候...通过在getSomeDatesetSomeDate方法中复制对象,我们无法消除安全风险,因为更改后的对象通过setSomeDate返回并且副本保留更改后的值。为了解决这种安全问题,有必要删除setSomeDate,或者完全不用担心。


0
投票

我使用java.time.LocalDate,发现它比java.util.Date好得多

© www.soinside.com 2019 - 2024. All rights reserved.