Byte []可能公开返回引用的内部表示形式-findbug

时间:2019-01-09 16:56:17

标签: java

我在一个带有旧代码的旧项目中工作,而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 [],我只是对如何处理感到困惑。

1 个答案:

答案 0 :(得分:2)

getFileContent()返回内部存储的字节数组。另一个与此相关的类可能会开始对其进行修改,从而也更改了原始类中的字节数组。 getFileContent()应该返回数组的副本,而不是数组实例本身。