我正在使用以下方法说明: 构造函数 publicProgrammingTeam(ProgrammingTeam p),它采用 编程团队将 p 作为参数并构造 p 的深拷贝。不要只写满足= p. 满足;。要进行深拷贝,必须调用ArrayList的拷贝构造函数:metes = new ArrayList();.
public ProgrammingTeam( ProgrammingTeam p ) {
teamName = p.teamName;
teamMembers = new String [ p.teamMembers.length ];
for (int i = p.teamMembers.length - 1; i >= 0; i--) {
}
meets = new ArrayList < Competition >();
}
我无法确切地弄清楚我应该如何撰写然后完成深度复制。我知道需要一个 for 循环来实际复制每个对象,但我不知所措,谢谢!
最佳答案
关于字符串数组...
字符串是不可变的,因此只需复制数组就足够了,例如使用 Arrays.copyOf()
使用方法:
teamMembers = Arrays.copyOf( p.teamMembers, p.teamMembers.length );
<小时/>
至于列表,这取决于......
如果竞争
是immutable ,使用ArrayList的复制构造函数:
meets = new ArrayList<Competition>(p.meets);
如果Competition
是可变的,您需要调用它的复制构造函数(如果需要的话定义它)。
meets = new ArrayList<Competition>();
for (Competition c : p.meets) {
meets.add(new Competition(c));
}
关于java - 使用 Java 中的构造函数进行深复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962263/