// 课程对象
class Class {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 学生对象
class User implements Cloneable {
private String name;
private Long id;
// 课程引用
private Class c;
public Class getC() {
return c;
}
public void setC(Class c) {
this.c = c;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof User) {
User user = (User) obj;
if (this.id == user.getId() && this.getName() == user.getName()) {
return true;
}
if (user.getId().equals(this.id)
&& user.getName().equals(this.name)) {
return true;
}
return false;
} else
return false;
}
}
User user1 = new User();
User user2 = user1;
User user3 = (User) user1.clone();
System.out.println(user1 == user2);
System.out.println(user3 == user1);
System.out.println(user3.equals(user1));
System.out.println(user3.getName() == user3.getName());// true,浅复制
Class c = new Class();
c.setName("语文");
user1.setC(c);
// 测试复制深度
User user4 = (User) user1.clone();
System.out.println(user4.getC() == user1.getC()); // true,说明引用的对象依然是同一个对象
class Car implements Serializable {
/**
*
*/
private static final long serialVersionUID = 42342L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 深复制
class People implements Serializable{
/**
*
*/
private static final long serialVersionUID = 543535212412L;
private Car car;
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public People deepClone() throws IOException, ClassNotFoundException {
// 腌制
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(this);
// 取出
ByteArrayInputStream input = new ByteArrayInputStream(out.toByteArray());
ObjectInputStream ois = new ObjectInputStream(input);
return (People) ois.readObject();
}
}
// 深复制
Car car = new Car();
car.setName("benz");
People p = new People();
p.setCar(car);
try {
People p2 = p.deepClone();
System.out.println(p2.getCar() == p.getCar()); // false,说明引用的对象也进行了复制
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有