我刚开始在IntelliJ项目中使用Firebug。
private byte[] image;
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
Firebug给了我错误:
May expose internal representation by incorporating reference to mutable object
我真的不明白错误意味着什么,以及如何减轻它。
我的构造函数也出现了这个错误:
public Design(byte[] image){
this.image = image;
}
我通过帖子修复了Getter上的错误,并了解它的含义,但构造函数en setter上的错误对我来说并不是很清楚。
答案 0 :(得分:1)
通过致电getImage()
,您将可以访问私人字段image
。然后,您可以以任何您喜欢的方式在外部修改它,这可能会给您带来不必要的结果。
您可以通过让getter返回基础数组的副本来绕过它。这样您就可以确保数据的完整性。
所以而不是
public byte[] getImage() {
return image;
}
您可以使用java.util.Arrays.copyOf(byte[] original, int newLength)
public byte[] getImage() {
return Arrays.copyOf(image, image.length);
}
我认为应该摆脱这种警告并使用起来更安全,因为现在可以保护您的数据免受来自外部的操纵。