克隆(Clone),Java有一些限制:

1、被克隆的类必须自己实现Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。Cloneable 接口实际上是个标识接口,没有任何接口方法。

2、实现Cloneable接口的类应该使用公共方法重写 Object.clone(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。

3、在Java.lang.Object类中克隆方法是这么定义的:

protected Object clone()

throws CloneNotSupportedException

创建并返回此对象的一个副本。表明是一个受保护的方法,同一个包中可见。

按照惯例,返回的对象应该通过调用 super.clone 获得。

举个例子说吧,现在有一个对象比如叫foo,你需要在创建当前对象的一个副本作为存根,这时候就会用到克隆:假如你不用Clone,那么你可以先new一个对象foo1:Foo foo1=new Foo(),然后用foo要产生一个副本,那副本要不要内存?----当然要了,那就对了!既然需要内存,(不克隆的情况下)你不new还有什么办法呢?请大家时刻铭记对象是Java运行时产生的,驻留在计算机内存中。

取消

评论

java 克隆有什么用_java中的克隆技术具体有什么应用?相关推荐

  1. java为什么要用反射_Java中为什么需要反射?反射要解决什么问题?

    一句话概括就是使用反射可以赋予jvm动态编译的能力,否则类的元数据信息只能用静态编译的方式实现,例如热加载,Tomcat的classloader等等都没法支持 Java中编译类型有两种: 静态编译:在 ...

  2. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  3. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  4. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  5. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  6. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  7. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

  8. 随机数在java 自旋锁的运用_Java 中自旋锁的实现

    Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常 ...

  9. java swap函数的包_java中swap函数

    ? ? ? 第1章 第2章 第3章 第4章 java语言概述 Java语言基础 对象与类 ...("swap方法里,a的值是" + a + ";b的值 是" + ...

最新文章

  1. Review学生作业管理系统
  2. MacBook 如何通过命令终端进入 U 盘内的目录
  3. dhcp failover linux,ISC dhcp failover的mclt参数很重要啊
  4. 两分钟让你变成jar包制作高手
  5. 数据库之MySQL ERROR 1698 (28000) 错误:Access denied for user 'root'@'localhost' error【摘抄】...
  6. 3.2 Lucene实战:一个简单的小程序
  7. 双纵坐标的绘图命令_Matplotlib绘图 | 快速定义图表样式的小技巧
  8. 我与前端之间不得不说的三天两夜之html基础
  9. 用python画图代码-【Matplotlib】利用Python进行绘图
  10. mysql 组复制 不一致_MySQL主从复制什么原因会造成不一致,如何预防及解决
  11. Python File文件方法操作open()
  12. 配置JDK环境变量(详细图文教程)
  13. cocosbuilder3.0 使用小记
  14. 【数据仓库】 BI 项目管理之角色和职责
  15. DIAMOND: 超快的蛋白序列比对软件
  16. littleVGL开发:littleVGL的介绍
  17. Maya mtoa使用Houdini Mplay当渲染窗口
  18. win10外接屏显示分辨率不匹配问题解决
  19. 年审是当月还是当天_车辆年审时间当月到当月办理可以吗
  20. NeurIPS 会议怎么读

热门文章

  1. linux clk驱动框架
  2. 解析grib格式数据库eccodes的安装
  3. word隐藏段落标记,回车三角
  4. 手机沙盒隔离软件_360隔离沙箱下载_360隔离沙箱独立版下载 v3.0.0 官方版_天天下载手机版...
  5. Html 单选按钮 多选按钮 下拉列表
  6. 多线程编程 ----- 四种同步方法
  7. 股市的通俗经济学原理
  8. DRV8818步进电机一种应用场景及实现思路
  9. python匿名函数lambda_Python中什么情况下应该使用匿名函数lambda
  10. 单元测试利器——手把手教你使用Mockito