今天安装了Findbugs,查询了一下项目全线爆红,本文记录Findbugs警告的解决方式整理.
May expose internal representation by returning reference to mutable object
BUG的测试结果如下:
public class TestDate extends BaseEntity {
@Temporal(TemporalType.TIMESTAMP)
private Date date;
@Temporal(TemporalType.TIMESTAMP)
private Calendar calendar;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Calendar getCalendar() {
return calendar;
}
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
}
测试代码如下:
TestDate testDate = new TestDate();
Calendar cal2 = Calendar.getInstance();
Date date = new Date();
cal2.setTime(date);
testDate.setDate(date);
testDate.setCalendar(cal2);
System.out.println("Date:"+testDate.getDate());
System.out.println("Calendar:"+testDate.getCalendar().getTime());
date.setTime(10000000);
System.out.println("Date:"+testDate.getDate());
System.out.println("Calendar:"+testDate.getCalendar().getTime());
获得结果
Date:Fri Jan 17 19:01:28 CST 2020
Calendar:Fri Jan 17 19:01:28 CST 2020
Date:Thu Jan 01 10:46:40 CST 1970
Calendar:Fri Jan 17 19:01:28 CST 2020
可以发现用Date给实体类赋值之后如果再操作Date会造成实体类已经赋值的属性值改变,所以在实体类中使用上Calendar优于Date而且功能全面