java13.8修改mystack类进行list域的深度复制
时间: 2023-07-14 09:14:06 浏览: 71
假设你的MyStack类中有一个List类型的域list,要进行深度复制,可以按照以下步骤进行:
1. 在MyStack类中添加一个构造方法,参数为另一个MyStack对象,用于进行复制:
```
public MyStack(MyStack other) {
// 对list进行深度复制
this.list = new ArrayList<>(other.list.size());
for (Object obj : other.list) {
if (obj instanceof Cloneable) {
try {
Method cloneMethod = obj.getClass().getMethod("clone");
Object cloneObj = cloneMethod.invoke(obj);
this.list.add(cloneObj);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
} else {
this.list.add(obj);
}
}
}
```
2. 在MyStack类中重写clone()方法,调用上面的构造方法进行复制:
```
@Override
public MyStack clone() {
return new MyStack(this);
}
```
这样,当你需要复制一个MyStack对象时,可以调用clone()方法进行深度复制。