我有一个类可以创建具有多个变量的汽车(年份,品牌,颜色,......,销售(布尔),描述(字符串),唯一标识符(int))。
在我的项目的一部分中,我需要创建一个克隆Car的方法,维护除sold(恢复为SOLD_DEFAULT)描述(恢复为DESC_DEFAULT)和唯一标识符(生成新标识符)之外的所有变量。
目前,我的克隆代码如下所示:
public Automobile cloner () {
Automobile Clone = new Automobile(brand,year,color,a,k,p,DESC_DEFAULT,SOLD_DEFAULT);
return Clone;
}
我看到自己被迫在新实例的()中包含所有变量,否则我会收到错误:它看不到任何参数。
我的问题是识别变量。它需要声明为我的汽车类私有的int,基本上作为一个计数器,第一辆汽车自动具有识别号码= 1,第二辆汽车= 2等......如果汽车被克隆,则识别对于新实例,数字增加一个。我将如何在克隆方法中做到这一点,我是否必须修改克隆汽车的方式?
另外,让我们说我在0号和1号位的表中放置了汽车,插槽2,3是空的,如:
Automobile [] stock = new Automobile [4];
如果我输入这些说明:
Automobile aRandomCar;
aRandomCar = stock[ 0 ];
stock[ 3 ] = aRandomCar;
stock[ 2 ] = stock[ 1 ].cloner();
然后我修改了股票[3]的年份和aRandomCar的颜色。既然它是一个平等的而不是一个新的实例(如股票[2]),这是否意味着我改变了股票的年份[3]我也改变它为aRandomCar,反之亦然?
非常感谢!!!!
P.S。:请参阅Getters, Setters and Constructors in Java - Making a car and stocking it以获取我班级代码的更多部分。
答案 0 :(得分:0)
尝试从Object类实现clone方法并实现Cloneable接口。使用super.clone()
克隆简单字段并手动克隆复合字段。
复合字段就像你的类没有克隆自己一样。仅为复合字段引用克隆