[英]Difference between initiliazing an object and super.clone()
我正在上数据结构课程,尝试编写一个DoublyLinked列表及其自己的方法,在我的书中我看到了这段代码,代码(1)和代码(2)之间是否有任何区别。 如果可以,我应该使用哪一个?
DoublyLinkedList<E> other=(DoublyLinkedList<E>) super.clone(); //code (1)
DoublyLinkedList<E> other=new DoublyLinkedList<>();//code (2)
它取决于在DoublyLinkedList的实现构造函数中写入的内容以及超类的方法“ clone”。 您可以不同地或同等地做。
如果使用工具“列表”,则必须编写自己的方法克隆。 “ LincedList”具有自己的方法。
并阅读是否需要这篇文章:Java克隆:复制构造函数与克隆https://dzone.com/articles/java-cloning-copy-constructor-vs-cloning
import java.util.ArrayList;
import java.util.stream.IntStream;
public class Clonetest implements Cloneable{
ArrayList<Integer> ints = new ArrayList<>();
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) throws CloneNotSupportedException {
Clonetest clA = new Clonetest();
IntStream.range(0,10).forEach(value -> clA.ints.add(value)); //add Integers
System.out.println(clA.ints);
clA.ints.removeIf(integer -> integer % 2 > 0); //remove part in clA.ints
Clonetest clB = (Clonetest) clA.clone();
System.out.println(clB.ints);
System.out.println(clB.ints.equals(clA.ints));
}
}
结果:
[0、1、2、3、4、5、6、7、8、9]
[0,2,4,6,8]
真正
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.