【发布时间】:2018-01-01 05:56:22
【问题描述】:
在处理模型类时,我面临以下警告:--
com.model.products.CategoryModel.setCreatedDate(Date) may expose internal representation by storing an externally mutable object into CategoryModel.createdDate
我的模型类
@JsonInclude(Include.NON_NULL)
public class CategoryModel {
private Date createdDate;
public Date getCreatedDate() {
return createdDate;
//Warning Message:--com.model.products.CategoryModel.getCreatedDate(Date) may expose internal representation by storing an externally mutable object into CategoryModel.createdDate
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
//Warning Message:--com.model.products.CategoryModel.setCreatedDate(Date) may expose internal representation by storing an externally mutable object into CategoryModel.createdDate
}
警告说明:--
返回对存储在对象字段之一中的可变对象值的引用会公开对象的内部表示。如果实例由不受信任的代码访问,并且对可变对象的未经检查的更改会危及安全性或其他重要属性,则您将需要做一些不同的事情。在许多情况下,返回对象的新副本是更好的方法。
在上面的模型类中我收到一个警告,处理这个问题的更好方法是什么?提前谢谢...
【问题讨论】:
-
你能用
LocalDate/LocalDateTime吗? -
虽然已折旧,但
Date仍然可以在外部更改(突变),这可能会对您的模型产生无法预料的后果,而LocalDate/LocalDateTime类不能(他们返回一个新对象) -
@MadProgrammer 所以你的意思是说我使用 LocalDate/LocalDateTime insted of date。
-
我没有足够的上下文来知道这是否可能,但这将提供日期/时间的不可变表示
-
@MadProgrammer 好的,我试试这个非常感谢..!!!