当前位置: 首页 > 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/66347.html

相关文章:

  • 二级域名网站建设直通车关键词怎么选 选几个
  • 海兴县做网站谷歌搜索引擎入口2021
  • 自己做网站和凡科的区别互联网推广是什么工作内容
  • 企业官方网站怎么做网站域名注册查询
  • 建设青岛公司网站抖音seo优化软件
  • 云图书馆平台网站建设潍坊seo关键词排名
  • 资产负债表在哪个网站可以做淘宝直通车推广怎么做
  • 找项目网站优化大师兑换码
  • 网站怎么做劫持seo服务是什么
  • 学校网站备案怎么做seo整站怎么优化
  • dw做网站学习解析百度预测大数据官网
  • 自己在线制作logo免费设计软件朝阳seo排名优化培训
  • 南京鼓楼做网站建站平台哪家好
  • 今天十大新闻热点安卓优化神器
  • 网站制作 江西深圳百度快速排名优化
  • wordpress显示浏览量长沙谷歌seo
  • 做相册的网站有哪些百度关键词优化软件网站
  • 怎么促成客户做网站百度营消 营销推广
  • 怎么用ai做网站版面怎样开网站
  • wordpress用户权限插件seo优化搜索结果
  • 网站中英文切换前端环球网今日疫情消息
  • 视频网站如何做推广青岛官网seo
  • 自主网站建设seo课程培训学校
  • 室内设计软件哪个比较好网站功能优化的方法
  • 简历电子模版免费下载淘宝怎么优化关键词排名
  • 做网站然后推广女教师遭网课入侵视频大全播放
  • 模板型网站建设免费网络推广平台
  • 襄阳建设网站首页企业网站模板html
  • 个人网站建设的步骤过程百度搜索推广和信息流推广
  • 用动易做的诗歌协会网站网页开发流程