当前位置: 首页 > wzjs >正文

北京网站建设找德冿朴无锡百度信息流

北京网站建设找德冿朴,无锡百度信息流,建信网个人证书查询,提供网站建设工具的公司让我们来看一个例子: 设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。 代码实现 Customer类和Address类都是实现的Java 内置的 java.lang.Cloneable …

让我们来看一个例子:

设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。

代码实现

Customer类和Address类都是实现的Java 内置的 java.lang.Cloneable 接口,无需自己定义

1. ​Customer 类

package experiment05.二;public class Customer implements Cloneable {private String name;private int age;private Address address;// 构造方法接受 CustomerBuilder 参数public Customer(CustomerBuilder builder) {this.name = builder.getName();this.age = builder.getAge();this.address = builder.getAddress();}// 浅克隆@Overridepublic Customer clone() throws CloneNotSupportedException {return (Customer) super.clone();}// 深克隆public Customer deepClone() throws CloneNotSupportedException {Customer cloned = (Customer) super.clone();cloned.address = this.address.clone();return cloned;}// Getter 方法public Address getAddress() {return address;}public String getName() {return name;}public int getAge() {return age;}
}

2. ​CustomerBuilder 类

package experiment05.二;public class CustomerBuilder {private String name;private int age;private Address address;public CustomerBuilder withName(String name) {this.name = name;return this;}public CustomerBuilder withAge(int age) {this.age = age;return this;}public CustomerBuilder withAddress(Address address) {this.address = address;return this;}public Customer build() {return new Customer(this);}// 提供给 Customer 构造方法访问的 GetterString getName() {return name;}int getAge() {return age;}Address getAddress() {return address;}
}

3.Address 类

package experiment05.二;public class Address implements Cloneable {private String street;private String city;public Address(String street, String city) {this.street = street;this.city = city;}@Overridepublic Address clone() throws CloneNotSupportedException {return (Address) super.clone();}public void setStreet(String street) {this.street = street;}public String getStreet() {return street;}public String getCity() {return city;}
}

4. ​Main 类

package experiment05.二;public class Main {public static void main(String[] args) throws CloneNotSupportedException {// 使用独立建造者类创建对象(链式写法)Customer original = new CustomerBuilder().withName("张三").withAge(30).withAddress(new Address("人民路123号", "北京市"))//以上三个的编译类型和运行类型都是CustomerBuilder.build();// 只有这个返回的是Customer对象(Customer的编译运行类型),build()方法实际返回的是new Customer(...)对象/*** 编译类型由变量声明或方法返回类型决定* 运行类型由实际创建的对象决定*//*     ==等效于==步骤1:创建建造者对象CustomerBuilder builder1 = new CustomerBuilder(); // ✅ 编译类型=运行类型=CustomerBuilder步骤2:设置姓名(返回建造者)CustomerBuilder builder2 = builder1.withName("张三"); // ✅ 编译类型=运行类型=CustomerBuilder步骤3:设置年龄(返回建造者)CustomerBuilder builder3 = builder2.withAge(30); // ✅ 编译类型=运行类型=CustomerBuilder步骤4:设置地址(返回建造者)CustomerBuilder builder4 = builder3.withAddress(new Address("人民路123号", "北京市")); // ✅ 类型同上步骤5:构建最终对象Customer original = builder4.build(); // ✅ 编译类型=Customer | 运行类型=Customer*/// 浅克隆和深克隆Customer shallowCopy = original.clone();Customer deepCopy = original.deepClone();// 修改原对象地址original.getAddress().setStreet("长安街456号");// 验证结果System.out.println("原始对象地址: " + original.getAddress().getStreet());      // 长安街456号System.out.println("浅克隆对象地址: " + shallowCopy.getAddress().getStreet()); // 长安街456号System.out.println("深克隆对象地址: " + deepCopy.getAddress().getStreet());    // 人民路123号}
}

简单版 (无建造者)

class Address implements Cloneable {private String street;private String city;public Address(String street, String city) {this.street = street;this.city = city;}@Overridepublic Address clone() throws CloneNotSupportedException {return (Address) super.clone();}public void setStreet(String street) {this.street = street;}public String getStreet() {return street;}
}class Customer implements Cloneable {private String name;private int age;private Address address;// 直接使用构造方法初始化public Customer(String name, int age, Address address) {this.name = name;this.age = age;this.address = address;}// 浅克隆@Overridepublic Customer clone() throws CloneNotSupportedException {return (Customer) super.clone();}// 深克隆public Customer deepClone() throws CloneNotSupportedException {Customer cloned = (Customer) super.clone();cloned.address = this.address.clone();return cloned;}public Address getAddress() {return address;}public String getName() {return name;}
}public class Main {public static void main(String[] args) throws CloneNotSupportedException {// 直接使用构造方法创建对象Customer original = new Customer("张三", 30, new Address("人民路123号", "北京市"));Customer shallowCopy = original.clone();Customer deepCopy = original.deepClone();original.getAddress().setStreet("长安街456号");System.out.println("原始对象地址: " + original.getAddress().getStreet());     // 长安街456号System.out.println("浅克隆对象地址: " + shallowCopy.getAddress().getStreet()); // 长安街456号System.out.println("深克隆对象地址: " + deepCopy.getAddress().getStreet());    // 人民路123号}
}

http://www.dtcms.com/wzjs/413207.html

相关文章:

  • wordpress充值卡生成seo网站优化培训价格
  • 地方网站欣赏长春做网站公司长春seo公司
  • 广东企业网站建设网站开发一般多少钱
  • 如何用网页制作网站平台开发
  • 平原县网站seo优化排名广州竞价托管
  • 网站建设的会计分录windows优化大师的作用
  • html5个人网站模板百度关键词指数
  • 邯郸市做网站建设网站建设高端公司
  • 建设交友网站的好处微信营销
  • 盐城网站建设费用鞍山做网站的公司
  • 企业怎么搭建网站友情链接交易网站源码
  • 前端开发和软件测试哪个好惠州搜索引擎seo
  • 网站建设项目分析报告免费发布信息网网站
  • 网站建设注册网络营销课程感悟
  • 给村里做网站广州软文推广公司
  • 网站做引流百度快速收录方法
  • 沈阳大型网站设计公司厦门百度seo排名
  • 怎么做短链接网站百度信息流账户搭建
  • 四会城乡建设局网站北京网络优化
  • 网站整体框架推广百度百科
  • 上海网站建设v芯ee8888e移动排名提升软件
  • wordpress 去除logo百度有专做优化的没
  • 申请的网站怎么建设哪个浏览器看黄页最快夸克浏览器
  • 淘宝图片做链接的网站关键词seo公司推荐
  • 做中国o2o网站领导seo关键词排名优化是什么
  • 免费做数学题的网站火星时代教育培训机构怎么样
  • Tp5即做网站又提供api接口网络营销公司简介
  • 成都高投建设开发有限公司网站网址收录入口
  • 定州网站建设app开发定制
  • 如何根据流量选择网站网络营销推广活动有哪些