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");
}
}
-
只写了 实现了Cloneable接口但没有重写clone()方法,因为
java: clone() 在 java.lang.Object 中是 protected 访问控制
1.1 其它类是调用不了的。
1.2 当前类是可以的
-
不写Cloneable接口
调用时报错.CloneNotSupportedException
-
浅拷贝
b,c 拷贝后独立,但是 a 仍然是同一块地址