首页 > 其他分享 >clone方法的使用

clone方法的使用

时间:2022-10-12 09:55:37浏览次数:52  
标签:克隆 对象 clone 引用 Cloneable 使用 copy 方法

转载自https://www.jianshu.com/p/ea8f7b1fbbb1

1. Cloneable的用途

Cloneable是标记型的接口,它们内部都没有方法和属性,实现 Cloneable来表示该对象能被克隆,能使用Object.clone()方法。如果没有实现 Cloneable的类对象调用clone()就会抛出CloneNotSupportedException。

2. 克隆的分类

  • 浅克隆(shallow clone),浅克隆是指拷贝对象时仅仅copy对象本身对象中的基本变量,而不拷贝对象包含的引用指向的对象。

  • 深克隆(deep clone),不仅copy对象本身,而且copy对象包含的引用指向的所有对象。

    举例:对象X中包含对Y的引用,Y中包含对Z的引用。浅拷贝X得到X1,X1中依然包含对Y的引用,Y中依然包含对Z的引用。深拷贝则是对浅拷贝的递归,深拷贝X得到X1,X1中包含对Y1(Y的copy)的引用,Y1中包含对Z1(Z的copy)的引用。

3. 克隆代码举例

要让对象可以被克隆,应具备以下2个条件:

  • 让该类实现java.lang.Cloneable接口;

  • 重写(Override)Object的clone()方法;

 

具体写法是在重写clone方法时候,类调用父类的clone(),其中成员变量是引用对象的,调用自身的clone()方法,并将值set入类的clone对象内。

标签:克隆,对象,clone,引用,Cloneable,使用,copy,方法
From: https://www.cnblogs.com/czfblog-01/p/16783488.html

相关文章

  • 使用Quill富文本上传图片Base64处理为服务器地址
    使用vue+elemen-ui开发QuillEditor.vue<template><div><el-upload:action="uploadUrl":before-upload="handleBeforeUpload":on-success=......
  • Win11右键默认显示更多选项怎么设置 【设置方法】
    Win11右键默认显示更多选项怎么设置【设置方法】1、首先用鼠标右键点击“开始”按钮(或者按Win+X键),选择点击“Windows终端(管理员)”。2、然后在终端应用程序里......
  • 数组方法 总结大全
    <!--会改变原数组的方法push()向数组的尾部添加若干元素,并返回数组的新长度pop()从数组的尾部删除一个元素(删且只删除一个元素),返回被删除的元素......
  • Stream流的特点_只能使用一次与Stream流中的常用方法_map
    Stream流的特点_只能使用一次Stream流属于管道流,只能被消费(使用)一次第一个Stream流调用完毕方法,数据就会流转到下一个Stream上而这时第一个Stream流已经使用完毕,就会......
  • 单元测试之Mockito+Junit使用和总结
    https://www.letianbiji.com/java-mockito/mockito-thenreturn.htmlMockito使用thenReturn设置方法的返回值thenReturn用来指定特定函数和参数调用的返回值。比如......
  • 使用CoreDNS自建dns
    前言公司有些内网服务需要使用域名访问,安装bind比较麻烦,故使用coredns实现域名服务。IP说明192.168.0.41安装dns,作为dns服务器192.168.0.20测试服务器......
  • Ceph使用---Crush Map进阶
    一、CephCrushMap介绍ceph集群中由mon服务器维护的的五种运行图:Monitormap#监视器运行图OSDmap#OSD运行图PGmap#PG运行图Crushmap#(Controllersrepl......
  • day08 final关键字&面向对象——多态&抽象类、方法&向上、向下转型
    day08final关键字最终的不可更改的特点:1)修饰类,类不能被继承2)修饰方法,方法不能被重写3)修饰成员变量(变为常量),值不能修改,名字大写,声明同时给常量赋值main方法中1)修饰......
  • WSL2中使用VSCode修改项目文件时报:VSCode : vscode-remote保存失败
    无法写入文件是因为当前用户没有权限改变当前用于到权限组remotesudochown-R$USER<directory_project>sudochown-Rlinfenghchs查看用户是否在对应的文件权限......
  • react中使用redux
    -  redux不是facebook团队开发的,不是只有react才可以用,angla、vue也可以用,不过vue中有专业的状态管理插件,vuex。vue3也出了一个pina。vue中并不用redux。使用redux的......