【发布时间】:2015-04-02 22:41:37
【问题描述】:
我有一个方法,其中我直接将方法参数分配给类变量。
public void sample(String[] targets)
{
this.objects = Targets;
}
我发现的一个解决方案是使用 Arrays.copy(targets) 创建数组的新副本。但我担心这是否会影响系统的性能。
我有两个问题:
首先,如果我使用 Arrays.copy(),影响有多大。
如果影响很大(如果阵列长度很高),那么是否有任何其他解决方案可以在不影响性能的情况下解决此声纳问题。
【问题讨论】:
-
您必须衡量对应用程序的性能影响,并确定您是否可以接受。如果您不能接受复制数组的冲击,您可能还有其他问题,但您唯一的其他解决方案是确保没有其他任何东西能够修改数组元素,从而无需复制它们。
-
您可以考虑使用 System.arrayCopy(..) 以获得更好的性能。
-
除非您的应用程序在大规模运行,否则您不会注意到性能差异,尤其是在数组不是很大的情况下。顺便说一句,您根本不需要 Arrays.copy;所有数组都有一个不引发异常的隐式公共
clone()方法。this.objects = targets.clone();就足够了。