使用findbugs扫描出该问题
findbug提示原文:
new top.jieziss.common.OldFileBodyUtil(byte[], String) may expose internal representation by storing an externally mutable object into OldFileBodyUtil.text
Bug type EI_EXPOSE_REP2 (click for details)
In class top.jieziss.common.OldFileBodyUtil
In method new top.jieziss.common.OldFileBodyUtil(byte[], String)
Field top.jieziss.common.OldFileBodyUtil.text
Local variable named text
At OldFileBodyUtil.java from InputFileObject:[line 22]
产生原因:
大概意思就是OldFileBodyUtil(byte[],String)可以通过将外部可变对象存储到OldFileBodyUtil.text中来公开内部表示,在许多情况下,存储对象的副本是更好的方法。
这里是重写了FileBody,使用httpClient上传文件流。问题改正如下:
原代码:
public OldFileBodyUtil(byte[] text, String fileName) {
super(file);
this.text = text;
this.fileName = fileName;
}
改正代码:
public OldFileBodyUtil(byte[] text, String fileName) {
super(file);
this.text = text.clone();
this.fileName = fileName;
}