1. 程式人生 > 其它 >Findbugs中的BUG:May expose internal representation by returning reference to mutable object

Findbugs中的BUG:May expose internal representation by returning reference to mutable object

技術標籤: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屬性值。