Java中哪个类包含 clone 方法?是 Cloneable 还是 Object?

在 Java 中,clone 方法实际上是定义在 Object 类中的,而不是 Cloneable 接口。

Object

Object 类是 Java 所有类的父类,它包含一个受保护的 clone 方法。这个方法用于创建并返回对象的一个副本。然而,要使得一个类的实例可以被克隆,该类必须实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常。

Cloneable 接口

Cloneable 接口是一个标记接口(即它没有包含任何方法)。实现 Cloneable 接口只是一个指示,表明类的实例可以通过 clone 方法进行克隆。如果一个类实现了 Cloneable 接口,并且你调用其 clone 方法,Object 类中的 clone 方法才会正常工作。

代码示例

public class MyClass implements Cloneable {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public static void main(String[] args) {
        try {
            MyClass obj1 = new MyClass(42);
            MyClass obj2 (MyClass) obj1.clone();
            System.out.println(obj2.value);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

在这个例子中,MyClass 实现了 Cloneable 接口,并重写了 clone 方法。在 main 方法中,我们创建了 obj1 的一个副本 obj2

总结

  • clone 方法定义在 Object 类中。
  • 实现 Cloneable 接口是为了表明该类的实例可以被克隆,从而避免 CloneNotSupportedException 异常。
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟主教

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值