在下面的代码中,我们在循环中将复数旋转了某个角度,然后确认得到的数字与我们开始时的数字相同。
public class Complex {
private float r, i;
...
public Complex(Complex other) {
r = other.r;
i = other.i;
}
}
Complex z1 = new Complex(..);
Complex z1_save = new Complex(z1);
Complex z2 = new Complex();
Complex k = new Complex();
k.set_to_first_root_of_unity(8);
int n = 64;
while(n-- != 0) {
z1.multiply(k, z2);
z1 = new Complex(z2); // Line Y
}
Assert.assertEquals(true, z1.equals(z1_save));
Java中有没有办法使用构造函数public Complex(Complex other)
而不是编写Line Y clone()
,并确定64个对象不会被垃圾收集?
更新: 如果不参考上下文(交互式应用程序的上下文),似乎不可能以简化的方式提出这个问题。到目前为止,对当前问题(assylias)的最佳答案是,90% 的时间都不应该担心对象创建和垃圾收集。在重绘期间,有必要 100% 地担心它。我现在在这里重申了这个问题。