标签归档:findbugs

关于findBugs的几个问题

1,Method returning array may expose internal repersentation

一个静态的公共函数,它返回了一个私有的静态数组的引用。任何调用这个静态公共函数的代码,都有可能改变这个私有的静态数组。实例代码如下:

Public String[] getArr(){
return arr;
}

这样get获取到这个数组后,可以改变数组的内容,如getArr()[0]=”abc”;

解决办法是返回他的clone:

Public String[] getArr(){

return arr.clone();

}

2,Storing reference to mutable object

这是因为set设置了一个对象后,还可以通过这个对象的引用改变该对象set的值:

public class Test{

private Date regDate;

public void setRegDate(Date regDate) {
this.regDate = regDate;
}

}</pre>
 
<pre title="">Test t=new Test();

Date now = new Date();

t.setRegDate(now);

now.setYear(4000);

解决办法是set赋值对象的clone:

public class Test{

private Date regDate;

public void setRegDate(Date regDate) {
this.regDate = regDate.clone();
}

}

参考:

[hyddd的FindBugs分析记录][M V EI2] May expose internal representation by incorporating reference to mutable object

[hyddd的FindBugs分析记录][M V MS] Public static method may expose internal representation by returning array