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

西安网站托管网站建设类文章

西安网站托管,网站建设类文章,公司网站管理维护,建设网站选择主机时费用最昂贵的方案是Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作#xff0c;请在类中实现clone()方法。Object类中的clone()方法的声明如下#xff1a;protected Object clone() throws CloneNotSupportedExceptionclone()方法声明为protected。 因此…Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作请在类中实现clone()方法。Object类中的clone()方法的声明如下protected Object clone() throws CloneNotSupportedExceptionclone()方法声明为protected。 因此不能从客户端代码调用它。以下代码无效Object obj new Object();Object clone obj.clone(); // Error. Cannot access protected clone() method需要在类中声明clone()方法为public来克隆类的对象。它的返回类型是Object。 这意味着将需要使用clone()方法转换返回值。假设MyClass是可克隆的。 克隆代码将如下所示MyClass mc new MyClass();MyClass clone (MyClass)mc.clone(); // Need to use a castObject类中的clone()方法会抛出CloneNotSupportedException。要调用clone()方法需要将调用放在try-catch块中或者重新抛出异常。示例以下代码显示了如何实现克隆方法。class MyClass implements Cloneable {private double value;public MyClass(double value) {this.value value;}public void setValue(double value) {this.value value;}public double getValue() {return this.value;}public Object clone() {MyClass copy null;try {copy (MyClass) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return copy;}}public class Main {public static void main(String[] args) {MyClass dh new MyClass(100.00);MyClass dhClone (MyClass) dh.clone();System.out.println(Original: dh.getValue());System.out.println(Clone : dhClone.getValue());dh.setValue(100.00);dhClone.setValue(200.00);System.out.println(Original: dh.getValue());System.out.println(Clone : dhClone.getValue());}}上面的代码生成以下结果。Original:100.0Clone :100.0Original:100.0Clone :200.0实例-2以下代码不从clone()方法返回对象类型该方法仅在Java5或更高版本中编译。class MyClass implements Cloneable {public MyClass clone() {Object copy null;return (MyClass)copy;}}下面的代码展示了如何做浅克隆。class MyClass implements Cloneable {private double value;public MyClass(double value) {this.value value;}public void setValue(double value) {this.value value;}public double getValue() {return this.value;}public Object clone() {MyClass copy null;try {copy (MyClass) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return copy;}}class ShallowClone implements Cloneable {private MyClass holder new MyClass(0.0);public ShallowClone(double value) {this.holder.setValue(value);}public void setValue(double value) {this.holder.setValue(value);}public double getValue() {return this.holder.getValue();}public Object clone() {ShallowClone copy null;try {copy (ShallowClone) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return copy;}}public class Main {public static void main(String[] args) {ShallowClone sc new ShallowClone(100.00);ShallowClone scClone (ShallowClone) sc.clone();System.out.println(Original: sc.getValue());System.out.println(Clone : scClone.getValue());sc.setValue(200.00);System.out.println(Original: sc.getValue());System.out.println(Clone : scClone.getValue());}}上面的代码生成以下结果。Original:100.0Clone :100.0Original:200.0Clone :200.0实例-3ShallowClone类的clone()方法中的代码与MyClass类的clone()方法相同。当ShallowClone类使用super.clone()调用Object类的clone()方法时它会接收自身的浅拷贝。也就是说它与其克隆共享其实例变量中使用的DoubleHolder对象。在深克隆中需要克隆对象的所有引用实例变量。class MyClass implements Cloneable {private double value;public MyClass(double value) {this.value value;}public void setValue(double value) {this.value value;}public double getValue() {return this.value;}public Object clone() {MyClass copy null;try {copy (MyClass) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return copy;}}class DeepClone implements Cloneable {private MyClass holder new MyClass(0.0);public DeepClone(double value) {this.holder.setValue(value);}public void setValue(double value) {this.holder.setValue(value);}public double getValue() {return this.holder.getValue();}public Object clone() {DeepClone copy null;try {copy (DeepClone) super.clone();copy.holder (MyClass) this.holder.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return copy;}}public class Main {public static void main(String[] args) {DeepClone sc new DeepClone(100.00);DeepClone scClone (DeepClone) sc.clone();System.out.println(Original: sc.getValue());System.out.println(Clone : scClone.getValue());sc.setValue(200.00);System.out.println(Original: sc.getValue());System.out.println(Clone : scClone.getValue());}}执行上面的代码将生成以下结果 -Original:100.0Clone :100.0Original:200.0Clone :100.0¥ 我要打赏纠错/补充收藏加QQ群啦易百教程官方技术学习群注意建议每个人选自己的技术方向加群同一个QQ最多限加 3 个群。
http://wiki.neutronadmin.com/news/3440/

相关文章:

  • 好的响应式网站做ppt用的音效网站
  • 企业网站建设方案 完整版上海外贸公司注册
  • 最好的网站制作公司手机怎么创网站免费
  • 学校网站建设的意义wix建站是免费的吗
  • h5手机模板网站衡阳网页定制
  • 大型网站seo方案怎样更新网站文章
  • 网站建设中可能出现的问题作文网高中
  • 网站商城建设公司关键词优化排名技术
  • 网站字体怎么修改网站开发的人李海涛
  • 响应式网站建设外文文献哪些网站是做设计的
  • 招聘网站建设方案模板下载河北建设工程交易信息网
  • 素材网站php程序源码做网站接广告赚钱吗
  • 网站改版建设原则京津冀协同发展规划纲要全文
  • 沙田网站仿做改图宝在线制作印章
  • 成都 网站建设 app 开发建设对公银行网站打不开
  • 网站建设报价表区块链开发平台
  • 潍坊网站建设工作国家信用信息公示系统湖北
  • 网站 网页数量怎么下载app到手机上
  • 城市介绍网站模板无代码开发原理
  • 用户后台网站微信小程序传奇怎么制作
  • 广州网站定制开发公司哪家好上海自贸区注册公司优惠政策
  • 一 网站建设管理基本情况seo数据监控平台
  • 17做网站广州建立的英文found
  • 百度搜索不到我的网站网站 体系
  • 网站开发遵循电商网站开发公司哪家好
  • 外贸自建站费用网站优化需要那些工具
  • 网站访客qq系统租网站服务器价格
  • 打码网站怎么做电商网站商品排序分类怎么做
  • wordpress建站中英文seo排名外包
  • 界面设计最好的网站目前中国建筑行业现状