Findbugs中的BUG:May expose internal representation by returning reference to mutable object
阿新 • • 發佈:2020-12-16
技術標籤:Java開發
一個簡單的類A:
@Data
public class A {
private Date time;
}
現在為類A中的time屬性賦值,測試程式碼如下:
public static void main(String[] args) {
A a = new A();
Date date = new Date();
a.setTime(date);
System.out.println(a.getTime());
date.setTime(6);
System. out.println(a.getTime());
}
測試結果:
可以發現一旦data變數被修改後,就會影響到原來賦給變數A的time屬性值。這明顯是有問題的。
解決方法
修改下取時間的方式,如下:
public static void main(String[] args) {
A a = new A();
Calendar date = Calendar.getInstance();
a.setTime(date.getTime());
System.out.println(a.getTime());
date. set(Calendar.YEAR, 6);
System.out.println(date.getTime());
System.out.println(a.getTime());
}
測試結果:
可以發現此時即使data變數被修改,也不會影響到原來賦給變數A的time屬性值。