我有一个方法,其中我直接将方法参数分配给类变量。
public void sample(String[] targets)
{
this.objects = Targets;
}
我发现的一个解决方案是使用Arrays.copy(target)创建一个新的数组副本。但我担心这是否会影响系统的性能。
我有两个问题:
首先,如果我使用Arrays.copy().,影响有多大
如果影响很大(如果阵列长度很长),那么有没有其他解决方案可以在不影响性能的情况下解决声纳问题。
Sonar提示建议您对给定数组进行防御复制。一般来说,你应该遵循这个建议,否则,你的代码可能会产生错误,这些错误是由不必要的副作用引起的,因此很难本地化。
通常,防御性复制对性能的影响是可以忽略的,因为它的开销不明显。对于支持/反对防御性复制的决策来说,更重要的是它对代码质量的其他方面的影响,如可读性、可用性和稳定性。
只要sample()
很少被调用,您就不需要犹豫是否要进行阵列复制。