Cloneable
- 浅clone
public class A implements Cloneable {
public String name;
public Object clone() {
A o = null;
try {
o = (A) super.clone(); // 调用java.lang.Object类的clone()方法。
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
- 深度clone(对于clone对象中有数组或者类成员的情况,浅clone只是clone了地址)
public class A implements Cloneable {
public String[] name;
public A(){
name=new String[2];
}
public Object clone() {
A o = null;
try {
o = (A) super.clone();
o.name=(String[])name.clone();//深度clone
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
Serializable
对象实现了Serializable接口才能被ObjectOutputStream序列化。
Externalizable
自定义序列化,必须有无参构造函数
本文后续补完