返回博主主页

java中cloneable接口的作用是什么

在Java中,Cloneable接口是一个标记接口,它没有任何方法。它的存在是为了告诉编译器,该类可以被克隆(复制)。

通过实现Cloneable接口,表示该类的实例可以通过调用clone()方法进行复制。clone()方法是Object类中的一个protected方法,它用于创建并返回一个与原始对象相同的副本。

需要注意的是,Cloneable接口只是一个标记接口,它并不强制要求实现类提供clone()方法。

使用clone()方法进行对象复制时,复制的是对象的浅拷贝。

总而言之,Cloneable接口的作用是告诉编译器,该类可以被克隆,并且需要实现clone()方法来提供对象的复制功能。

public class CC implements Cloneable {

    ArrayList<String> a = new ArrayList<>();
    String b;
    Integer c;

    public static void main(String[] args) throws CloneNotSupportedException {
        CC c =new CC();
        c.a.add("1");
        c.b = "b";
        c.c = 1;
        final CC clone = (CC)c.clone();
        clone.a.add("2");
        clone.b = "clone b";
        clone.c=2;
        System.out.println("123");
    }
}
  1. 只写了 实现了Cloneable接口但没有重写clone()方法,因为java: clone() 在 java.lang.Object 中是 protected 访问控制
    1.1 其它类是调用不了的。
    image
    1.2 当前类是可以的
    image

  2. 不写Cloneable接口
    调用时报错.CloneNotSupportedException
    image

  3. 浅拷贝
    image

b,c 拷贝后独立,但是 a 仍然是同一块地址

posted @ 2024-09-13 16:05  懒惰的星期六  阅读(22)  评论(0编辑  收藏  举报

Welcome to here

主页