【问题标题】:Returning 'dataBytes' may expose an internal array [duplicate]返回“dataBytes”可能会暴露一个内部数组[重复]
【发布时间】:2018-03-19 18:49:29
【问题描述】:

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

  public byte[] getBytes() {
    return dataBytes;
  }

声纳给了我例外。我该如何解决这个问题?

Returning 'dataBytes' may expose an internal array

【问题讨论】:

  • 不要返回内部数组...你明白错误吗?你明白为什么这可能是一件坏事吗?
  • @BoristheSpider 为什么这是一件坏事?抱歉问愚蠢的问题..只是想学习

标签: java arrays sonarqube


【解决方案1】:

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

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

【讨论】:

  • 不,永远不要在例程中分配。请改用重用模式。
  • 它会返回完全相同的字节数组而没有任何区别吗?因为如果由于这个 copyOf 而在数组中发生任何变化,那么它会导致问题,所以只需尝试确保。
  • @user5447339 这个名字是copyOf。你觉得它有什么作用?
  • 我相信它正在复制原始长度的字节数组并返回原始数组
  • @user5447339 返回原始数组有什么意义?它返回副本,而不是原件。
猜你喜欢
  • 2015-06-10
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 2023-03-12
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多