我有这段代码:
int width = 1280;
int height = 720;
List<ElectronicDevice> devices = new ArrayList<ElectronicDevice>();
class ElectronicDevice {
int x;
int y;
// ...
}
class EClock extends ElectronicDevice {
int hz;
EClock(int x, int y, int clock) {
this.x = x;
this.y = y;
this.hz = hz;
}
// ...
}
class EBulb extends ElectronicDevice {
EClock(int x, int y) {
this.x = x;
this.y = y;
}
// ...
}
class ToolbarElement {
ElectronicDevice dev;
ToolbarElement(ElectronicDevice dev) {
this.dev = dev;
}
public void addDevice() {
// somehow add a copy of `dev` to the `devices` list
}
}
List<ToolbarElement> elements = new ArrayList<ToolbarElement>();
elements.add(new EClock(width/2, height/2, 5));
elements.add(new EBulb(width/2, height/2));
elements.get(0).addDevice();
我需要将{ToolerElement dev
的副本添加到devices
,但我不知道如何。它需要是一个深层复制。在该计划中,我不了解所有设备的构造函数,我只想将dev
深入克隆到devices
。
我尝试将implements Cloneable
添加到ElectronicDevice
类,但之后我需要将clone()
方法添加到每个扩展ElectronicDevice
的类中。
将implements Cloneable
添加到ElectronicDevice
之后,它大部分都有效,但是在添加了多个时钟之后所有时钟都已经去同步(这是Processing中的图形应用程序,每个扩展的类{{1}可以有ElectronicDevice
方法指定它的行为方式,时钟在0和1之间振荡,频率为behavior()
Hz。)
这是我的hz
实施:
addDevice()
是否有任何解决方案不需要修改扩展ElectronicDevice的每个类?