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

标签 java

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

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/

相关文章:

java - 在matlab中使用java类的清理问题

java - 同一 ExecutorService 中的多个生产者和单个消费者

java - 使用查询字符串搜索对象时,我应该采用什么 Spring 策略?

java - 底部导航 fragment 应用程序不断崩溃

Java -version 打印错误的版本

java - 按位置过滤时使用 hbc 的 fatal error 代码 406

c# - 桌面共享和聊天开源

java - 每秒更改 TextView 中的文本

java - 在两个不同模式中使用两个同名表时避免 Hibernate Annotation Exception

java - 未知公式的包装函数