如何使用相同类型的对象创建对象

时间:2015-07-08 19:56:52

标签: java

我想知道是否有可能使用相同类型的其他对象来获取对象的新实例。

public class Vegetable{
    private int ...
    //a lot of fields
    public Vegetable(Vegetable v) {
        //some magic here
    }
}

我正在寻找一个选项,我不会在构造函数中手动复制每个单独的字段,而是使用 super(v)之类的东西。

1 个答案:

答案 0 :(得分:3)

Java不提供默认的复制构造函数。

但是,Java确实提供了方法Object.clone()。您可以在实现Cloneable的类的实例上调用它。否则,它将抛出CloneNotSupportedException。

默认实现会创建浅层副本。如果对象包含对其他对象的引用,则仅复制引用。这通常不是你想要的。要创建更深入,更独立的副本,可以扩展默认实现。

您可以创建自己的复制构造函数,这有时很有用。但是,与clone()不同,复制构造函数不需要创建同一个类的另一个实例。类T的复制构造函数将始终创建一个T,即使它传递了T的子类的实例。