Java 返回';数据字节';可能会暴露内部阵列

Java 返回';数据字节';可能会暴露内部阵列,java,arrays,sonarqube,Java,Arrays,Sonarqube,我在其中一个类中有一个getter方法: public byte[] getBytes() { return dataBytes; } 声纳给了我一个例外。我该怎么解决这个问题 Returning 'dataBytes' may expose an internal array 返回数组的副本,因此对其所做的任何更改都不会反映在原始数组中。这当然会导致性能和内存损失,因此对于大型阵列,这可能是您需要考虑的问题 return Arrays.copyOf(dataBytes, d

我在其中一个类中有一个getter方法:

  public byte[] getBytes() {
    return dataBytes;
  }
声纳给了我一个例外。我该怎么解决这个问题

Returning 'dataBytes' may expose an internal array

返回数组的副本,因此对其所做的任何更改都不会反映在原始数组中。这当然会导致性能和内存损失,因此对于大型阵列,这可能是您需要考虑的问题

return Arrays.copyOf(dataBytes, dataBytes.length);

不要返回内部数组。。。你理解错误吗?你明白为什么这可能是件坏事吗?@Boristespider为什么这是件坏事?对不起,我问了个愚蠢的问题。。只是试着学习不,永远不要按常规分配。改用重用模式。它会返回完全相同的bytearray而没有任何区别吗?因为如果数组中的任何内容因为此copyOf而发生更改,则会导致问题,所以请确保@user5447339名称为
copyOf
。你认为它是做什么的?我相信它是复制原始长度的数组并返回原始数组back@user5447339返回原始数组有什么意义?它返回的是副本,而不是原件。