当前位置: 代码迷 >> Java相关 >> 急java初学者大侠一个有关问题~
  详细解决方案

急java初学者大侠一个有关问题~

热度:72   发布时间:2016-04-22 21:01:45.0
急,java菜鸟请教各位大侠一个问题~~
写了一段java代码,然后用静态检查工具做了检查,报错了,不知道什么原因,红色的是报错信息,意思是将引用值赋值给可变对象,请教各位大侠错误原因和如何修改~~
public class EPGSyncLabel {

  private String country_id;

  private Date last_sync_time;

  private int total_num;

  private int is_auto_sync;

  private String domain;



  public String getCountry_id() {

return country_id;

}



public void setCountry_id(String country_id) {

                this.country_id = country_id;

        }



        public Date getLast_sync_time() {

CID 268268: EI: Exposes internal representation (FB.EI_EXPOSE_REP) [select defect]

                return last_sync_time;

}



        public void setLast_sync_time(Date last_sync_time) {

CID 268273: EI2: Storing reference to mutable object (FB.EI_EXPOSE_REP2)At (1): com.samsung.awaken.mywork.pojo.EPGSyncLabel.setLast_sync_time(Date) may expose internal representation by storing an externally mutable object into EPGSyncLabel.last_sync_time 

                this.last_sync_time = last_sync_time;


        }
------解决方案--------------------
分析:
上述findbugs的bug常出现在JavaBean中的setXXX(Object)、getXXX()、构造方法等中,原因都是一个,类似数组、Date等和其他所有java对象一样传递的都是引用,当你外部改变了这些引用值的时候,显然会影响使用这些引用的JavaBean。 

解决: 
所有的对象型如数组、Date等都人为采用传值(并增加空逻辑判断)。
Java代码  收藏代码
public Date getDate() {  
    if(date == null) {  
        return null;  
    }  
    return (Date) date.clone();    
}    
public void setDate(Date date) {   
    if(date == null) {  
        this.date = null;  
    }else {  
        this.date = (Date) date.clone();  
    }    
}  
  相关解决方案