我想知道是否可以使用相同类型的其他对象来获取对象的新实例。
public class Vegetable{
private int ...
//a lot of fields
public Vegetable(Vegetable v) {
//some magic here
}
}
我正在寻找一个选项,我不会在构造函数中手动复制每个字段,而是使用类似 super(v) 的内容。
最佳答案
Java 不提供默认的复制构造函数。
但是,Java 确实提供了方法 Object.clone()
。您可以在实现 Cloneable 的类的实例上调用它。否则,它将抛出 CloneNotSupportedException。
默认实现会创建浅拷贝。如果您的对象包含对其他对象的引用,则仅复制引用。这通常不是您想要的。要创建更深、更独立的副本,您可以扩展默认实现。
您可以创建自己的复制构造函数,这有时很有用。然而,与clone()
不同的是,复制构造函数不需要创建同一类的另一个实例。类 T 的复制构造函数将始终创建 T,即使它传递了 T 子类的实例。
关于java - 如何使用相同类型的对象创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302485/