我在一个带有旧代码的旧项目中工作,而findbug用byte []给出以下错误。
FindBugs:通过合并可以公开内部表示 对可变对象的引用此代码存储对 外部可变对象变成内部表示 宾语。如果实例通过不受信任的代码访问,并且未选中 更改可变对象会损害安全性或其他 重要属性,您将需要做一些不同的事情。储存 在许多情况下,最好是复制对象。
我想知道是否有人可以帮助我理解处理此错误的正确方法?
private byte[] fileContent;
public FileUpload(String fileName, String fileExtension, long fileSize, byte[] fileContent, boolean attachedToPo, boolean programOwner) {
this.fileName = fileName;
this.fileExtension = fileExtension;
this.fileSize = fileSize;
this.fileContent = fileContent;
this.attachedToPo = attachedToPo;
this.programOwner = programOwner;
}
public byte[] getFileContent() {
return fileContent;
}
public void setFileContent(byte[] fileContent) {
this.fileContent = fileContent;
}
编辑 我知道为什么存在该错误,并且我知道在日期等方面如何处理。对于byte [],我只是对如何处理感到困惑。
答案 0 :(得分:2)
getFileContent()返回内部存储的字节数组。另一个与此相关的类可能会开始对其进行修改,从而也更改了原始类中的字节数组。 getFileContent()应该返回数组的副本,而不是数组实例本身。