建设家具网站的目的及功能定位,创建一个网站需要怎么做,移动 网站 素材,网站首页静态好还是动态好目录
1、通过继承Cloneable接口#xff0c;重写clone方法实现深克隆
2、通过序列化与反序列化的方式实现深克隆
3、第三方工具类实现深克隆#xff0c;克隆对象需继承Serializable接口
3.1、Apache Commons Lang的SerializationUtils.clone方法
3.2、Gson工具类
3.3、F…目录
1、通过继承Cloneable接口重写clone方法实现深克隆
2、通过序列化与反序列化的方式实现深克隆
3、第三方工具类实现深克隆克隆对象需继承Serializable接口
3.1、Apache Commons Lang的SerializationUtils.clone方法
3.2、Gson工具类
3.3、FastJson工具类 1、通过继承Cloneable接口重写clone方法实现深克隆
Data
AllArgsConstructor
ToString
public class User implements Cloneable{private String name;private int age;private House house;Overrideprotected User clone() throws CloneNotSupportedException {User user (User) super.clone();user.setHouse(house.clone());return user;}
}Data
AllArgsConstructor
ToString
public class House implements Cloneable{private String location;private double price;Overrideprotected House clone() throws CloneNotSupportedException {return (House) super.clone();}
}public static void main(String[] args) {House house new House(市区, 58955);User user new User(张三, 18, house);User cloneUser user.clone();
}
2、通过序列化与反序列化的方式实现深克隆
克隆对象需继承Serializable接口
Data
AllArgsConstructor
ToString
public class House implements Serializable {private String location;private double price;
}Data
AllArgsConstructor
ToString
public class User implements Serializable {private String name;private int age;private House house;
}SneakyThrows
public static void main(String[] args) {House house new House(市区, 58955);User user new User(张三, 18, house);//序列化ByteArrayOutputStream outputStream new ByteArrayOutputStream();ObjectOutputStream objectOutputStream new ObjectOutputStream(outputStream);objectOutputStream.writeObject(user);//反序列化ByteArrayInputStream inputStream new ByteArrayInputStream(outputStream.toByteArray());ObjectInputStream objectInputStream new ObjectInputStream(inputStream);User cloneUser (User)objectInputStream.readObject();
}
3、第三方工具类实现深克隆克隆对象需继承Serializable接口
Data
AllArgsConstructor
ToString
public class House implements Serializable {private String location;private double price;
}Data
AllArgsConstructor
ToString
public class User implements Serializable {private String name;private int age;private House house;
}
3.1、Apache Commons Lang的SerializationUtils.clone方法
dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId
/dependency
public static void main(String[] args) {House house new House(市区, 58955);User user new User(张三, 18, house);User cloneUser SerializationUtils.clone(user);
}
3.2、Gson工具类
dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.5/version
/dependency
SneakyThrows
public static void main(String[] args) {House house new House(市区, 58955);User user new User(张三, 18, house); Gson gson new Gson();//将对象序列化为json字符串String userStr gson.toJson(user);//然后将字符串反序列化为对象User cloneUser gson.fromJson(userStr, User.class);
}
3.3、FastJson工具类
dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.78/version
/dependency
SneakyThrows
public static void main(String[] args) {House house new House(市区, 58955);User user new User(张三, 18, house);//将对象序列化为json字符串String userStr JSON.toJSONString(user);//然后将字符串反序列化为对象User cloneUser JSON.parseObject(userStr, User.class);
} 以上内容为个人学习理解如有问题欢迎在评论区指出。 部分内容截取自网络如有侵权联系作者删除。