声纳问题-阵列直接存储



我有一个方法,其中我直接将方法参数分配给类变量。

public void sample(String[] targets)
{
    this.objects = Targets;
}

我发现的一个解决方案是使用Arrays.copy(target)创建一个新的数组副本。但我担心这是否会影响系统的性能。

我有两个问题:

首先,如果我使用Arrays.copy().,影响有多大

如果影响很大(如果阵列长度很长),那么有没有其他解决方案可以在不影响性能的情况下解决声纳问题。

Sonar提示建议您对给定数组进行防御复制。一般来说,你应该遵循这个建议,否则,你的代码可能会产生错误,这些错误是由不必要的副作用引起的,因此很难本地化。

通常,防御性复制对性能的影响是可以忽略的,因为它的开销不明显。对于支持/反对防御性复制的决策来说,更重要的是它对代码质量的其他方面的影响,如可读性、可用性和稳定性。

只要sample()很少被调用,您就不需要犹豫是否要进行阵列复制。

最新更新