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

gta5房地产网站建设中东营网站设计

gta5房地产网站建设中,东营网站设计,wordpress 插件 cdn,网站建设夬金手指花总让我们来看一个例子: 设计一个客户类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/821926.html

相关文章:

  • 英语培训网站建设需求分析报告网站建设开源程序
  • 太原专业网站建设网站推广营销活动
  • 广东省建设八大员网站电子商务网站建设的方法与流程
  • 视频网站 界面设计刚开始做电商怎么入手
  • 诚信网站认证必需做吗wordpress不允许评论
  • 宁波模板开发建站微信群
  • 网站需要怎么做才能被百度收录公众号平台网站开发
  • 网站推广优化软件superstore wordpress
  • 有没有专门做图的网站怎么建立网站数据库连接
  • 网站制作致谢词网站建设 swot分析
  • 木马网站链接有什么网站追踪如何做
  • 做网站前网络推广营销策划
  • 安卓端网站开发ideseo搜索是什么
  • 果洛wap网站建设比较好软考网络规划设计师论文
  • 网站备案负责人百度网站官网入口
  • 浦东新区建设机械网站重庆网站建设论坛
  • 做网站需要好多图片风景网页设计图片
  • 移动网站 模板创作平台有哪些
  • 网站建设流程有几个阶段北京电商网站建设
  • 苏州高端网站建设kgwl徐老师在那个网站做发视频下载
  • 谁告诉你j2ee是做网站的wordpress 腾讯云插件
  • 河北建设厅网站查询网站创建公司哪家好
  • 做网站的带宽站长统计app软件下载
  • 建设网站公开教学视频网站建设类图书有哪些
  • 深圳建设网站价格网站开发优秀论文
  • 泰州网站制作套餐济南网站建设及推广
  • 制作外贸网站开发百度推广如何获取精准的客户
  • 深圳建设厅网站官网wordpress ownclound
  • 网店代运营网站做百度推广网站得多少钱
  • 移动网站建设多少钱网站备案类型及条件