`
yaasshole
  • 浏览: 658853 次
文章分类
社区版块
存档分类
最新评论

如何支持clone方法

 
阅读更多
1)实现Cloneable接口,因为Object的clone方法将检查类是否实现了Cloneable接口,如果没有将抛出异常CloneNotSupportedException对象。Cloneable接口没有任何方法,只是个标志,所以只需要简单得写上implements Cloneable即可。
2)改写从Object继承而来的clone方法,使它的访问权限为public,因为为了防止意外的支持clone操作,Object的clone方法是protected权限。
3)在clone方法中,调用super.clone()方法。Object的clone方法能够按照旧对象的大小创建足够的内存空间,并按位拷贝到新的对象空间。因此注意如果只调用super.clone方法,只能达到浅拷贝的效果。
如果想要达到深拷贝的效果,就需要自己编写代码拷贝每一个成员变量。
举例如下:
publicclass MyInteger implements Cloneable
{
privateintvalue;
public MyInteger(int value)
{
this.value=value;
}
publicvoid setValue(int value)
{
this.value=value;
}
publicint getValue()
{
returnvalue;
}
public Object clone()
{
try
{
returnsuper.clone();
}
catch(CloneNotSupportedException e)
{
System.err.println(e);
}
returnnull;
}
}
分享到:
评论

相关推荐

    Clone Star[克隆之星]

    Clone Star V4.1 是一块系统恢复软件,编写该软件的意旨在于为WINDOWS的备份和恢复 提供一种简单方便的操作方式,当然您也可以通过编辑命令用于硬盘对拷、分区对拷等 操作,它是基于GHOST软件工作的,可以在...

    dvd转换器(Clone2Go DVD Ripper) V2.8.1中文破解版

    dvd转换器(Clone2Go DVD Ripper)是一款功能强大的dvd视频格式转换器,能够帮助用户将dvd的音频和视频提取出来,转换为ipad,iphone,apple tv,psp,xbox等设备的视频和音频文件,并且支持CSS加密的DVD光盘,还可以...

    三分钟编译支持NTFS的Linux系统模块

    当你安装完Linux系统,并且已经启动,如果你的硬盘上还安装了WinNT/2000系统,你试图去访问另一个NTFS分区时却遇到了麻烦。...本文给你提供一个简单的方法,你可以轻松地去编译你所需要的支持NTFS系统的模块。

    cloneall:克隆用户的所有存储库

    ###用法:python cloneall.py [-a|--all] [-u 用户名] [--no-curses] 如果未设置 -a 或 --all 标志,脚本将依次询问每个存储库。 如果给出了 --no-curses 选项,程序将使用标准输入法。 如果未给出 --no-curses,则...

    deep-clone:使用纯JS实现Deep Clone

    支持以下测试用例(至少到目前为止我已经考虑过): 空对象(谁不想) 非对象 数组 简单对象(PO​​JO) 嵌套对象 复杂(?)对象(函数,数组,一次嵌套) 用法 克隆存储库,然后将deepClone()方法复制到您...

    XSeries:跨版本Minecraft Bukkit支持和各种有效API方法的库

    该库主要旨在为Minecraft Bukkit服务器提供跨版本支持,但它还包括许多其他方法,可帮助开发人员更轻松,更高效地设计其插件。 一些实用程序与跨版本支持完全无关,例如NoteBlockMusic。 不要忘记在您的plugin.yml...

    GithubSpeedUp:一个Python脚本,可帮助加快Github网站的加载速度

    /[用户名]/[仓库名].git镜像(不支持clone)特殊:我推荐第一种方法方法一(替换URL)git clone https://gitclone.com/github.com/tendermint/tendermint.git方法二(设置git参数)git config --global url....

    开源Silverlight数据访问组件System.Data.Silverlight

    该程序集中定义了一套DataSet、DataTa对象,作为数据通讯的数据格式,完全兼容ADO.NET中的DataSet、DataTable,两者之间可以通过XML互相转换,提供相应的转换方法。程序中还定义了一套DbConnection、DbCommand对象,...

    JLinkV8/V9/OB固件可用新驱动7.65a等完美调试解决j-link is defective,j-link clone

    ,V8 / OB 也只能用回6.14b旧驱动版本,但是又有问题了旧版驱动支持器件不全,不甘心又从固件鼓捣,,经过几天的研究,, 终于是搞好了几个固件都可以自动升级,可以用官网最新版驱动7.64b、7.65a等等,完美运行完美...

    Classic-Arcade-Game-Clone:HTML5 Canvas支持的视频游戏,使用面向对象JavaScript中的最佳实践开发

    HTML5 Canvas支持的视频游戏,使用面向对象JavaScript中的最佳实践开发。 运行应用程序 打开以在线运行 如果您在本地运行,请下载此源代码,然后在浏览器中打开index.html,然后开始播放 播放应用 通过使用键盘上的...

    野火IM服务软件 v1.1.2

    野火IM是一套跨平台、核心功能...由于使用了一个git的maven插件,如果本地没有git信息就会编译出错,请使用git clone的方法下载代码,或者下载压缩包解压后在根目录创建.git的空目录。建议用git clone的方式下载代码。

    itGrid v2.02

     Clone方法提供快速的combo属性和条目复制;  在列表列内自动换行(Word-wrap);  列表头;  ListDrop和ListHide事件;  ListRows属性设置dropdownList的最大条目数; 支持的开发环境 • Visual C++...

    Chatroom-Demo:操作系统与Linux程序设计团队作业

    基于套接字编程的多人聊天室基于Scoket编程的多客户端聊天室项目已托管...接收包括其他用户信息以及服务器信息发送文件,接收包括其他用户文件聊天功能展示收发文件功能展示食用方法clone项目至本地,使用git clone "

    元搜索引擎 searchengine 元数据 元搜索

    3 使用方法 git clone https://github.com/zhu733756/searchengine.git cd searchengine [search.py的父目录] python3 search.py [site] [keywords] [page] [sorttype] site: 目前支持 bing/weibo/weixin/baidu/...

    Android代码-Android开发常用整理

    > 如果需要使用FragmentTabAdapter,则需要android-support-v4.jar的支持(以兼容低版本) 使用方法 clone代码,并在项目中引入AndroidBucket。 Gradle(Check newest version) compile '...

    RtspServer:RTSP服务器,支持传输H.264和AAC格式的音视频

    使用方法 提供示例:传输H.264文件、传输AAC文件、同时传输H.264和AAC文件、采集摄像头数据编码传输、采集声卡数据编码传输 1、传输音视频文件 下载 # git clone git@github.com:ImSjt/RtspServer.git 编译 # cd ...

    vuets:VueTS 是一种使 Typescript 和 Vue 无缝工作的方法,具有完整的类型支持和定义

    VueTS 是一种使 Typescript 和 Vue 与完整的类型支持和 api 定义无缝协作的方法。 该存储库包含一系列用于 Vue 和 TypeScript 的示例应用程序和定义文件。 这项探索是 Harland Clarke 使用 Vue 和 Typescript 的大型...

    Spotify-Clone:在线React Editor和IDE

    是一种快速的前端构建工具,其中包括热模块重载(HMR),优化的构建以及TypeScript支持等功能。 结合使用这两种方法是构建Web应用程序的最快方法之一。入门命中奔跑编辑并观看它的实时更新! 默认情况下,Repl.it...

    matlab中存档算法代码-COBRA-plus:眼镜蛇

    您可以使用以下方法克隆存储库: $ git clone --depth=1 https://github.com/opencobra/cobratoolbox.git cobratoolbox 请注意clone命令中的--depth=1 。 在Terminal (在和上)或Git Bash (在)中运行此命令-不...

    pi.js:基于使用蒙特卡罗方法计算 Pi 的 WebGL 演示

    克隆这个 repo, git clone git://github.com/e-eq-mc2/pi.js.git或git clone http://github.com/e-eq-mc2/pi.js.git 。 将克隆的 repo 放在您的 Web 服务器中。 在支持 WebGL 的浏览器上打开 pi.js/index.html。 ...

Global site tag (gtag.js) - Google Analytics