首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

java cloneable 用途_java中cloneable的使用「建议收藏」

要想实现克隆,只需定义的类声明下cloneable这个标记性接口,并且衍生重写Object类中就有的clone()方法即可. 为什么类要首先声明cloneable标记接口,然后重写clone()方法?...因为不声明cloneable调用clone()方法会抛出CloneNotSupportedException异常,源码如下: protected Object clone() throws CloneNotSupportedException...(this instanceof Cloneable)) { throw new CloneNotSupportedException(“Class ” + getClass().getName()...+ ” doesn’t implement Cloneable”); } return internalClone(); } /* * Native helper method for cloning...实现深克隆(实现很简单只需要引用类型变量实现cloneable接口即可),相比浅克隆,只需做如下修改. public class Animal implements Cloneable{ private

43820

关于Cloneable接口和clone方法「建议收藏」

Object clone() throws CloneNotSupportedException; 一个本地方法,protected权限: 这样做是为避免我们创建每一个类都默认具有克隆能力   1.2 实现Cloneable...接口 我们要使用一个对象的clone方法,必须Cloneable接口,这个接口没有任何实现,跟 Serializable一样是一种标志性接口 如果不实现Cloneable接口,会抛出CloneNotSupportedException...异常 重写clone方法,使用public修饰(否则外部调用不到),调用父类的clone方法 如下: public class CloneModel implements Cloneable{...例子: class Model2{ int height; } public class CloneModel implements Cloneable{ private String...getModel2()==cloneModel2.getModel2()); } 执行返回:true 3.2 如何实现深克隆 还是上面的例子,我们改下代码 class Model2 implements Cloneable

23510

JavaSE学习随笔(一) Cloneable接口源码分析与技术细节

接下来我们将从Cloneable接口的源码入手,对其技术细节和使用方法进行详细的介绍。 二、源码分析 打开JavaSE源码找到Coloneable接口,其源代码如下。...我们会发现一件很有意思的事情,那就是Cloneable接口竟然没有定义任何的接口方法,这是为什么呢?.../*Cloneable接口源代码,JDK1.8*/ public interface Cloneable { } Cloneable接口之所以没有定义任何的接口的原因其实很简单,那就是在Java...其实,Cloneable接口在这里起到了一种标识的作用,表明实现它的类具备了实例拷贝功能,在Cloneable接口的官方javadoc文档中有这样一段话: “Invoking Object...因此,要想使一个类具备拷贝实例的功能,那么除了要重写Object类的clone()方法外,还必须要实现Cloneable接口。

30720

objectable_java throwable

目的是如果一个类想要允许其他人克隆它,那么它应该支持Cloneable接口并使用公共克隆方法覆盖默认的受保护克隆方法。不幸的是,由于在时间迷雾中方便丢失的原因,Cloneable接口没有定义克隆方法。...有些类声称支持Cloneable,但不小心忘记支持克隆方法。开发人员对Cloneable应该如何工作以及克隆应该做什么感到困惑。不幸的是,向Cloneable添加”克隆”方法将是一种不兼容的更改。...轶事证据表明,在实践中,有许多类支持Cloneable接口,但无法提供公共克隆方法。经过讨论,TRC一致建议我们不要修改现有的Cloneable接口,因为兼容性影响。...尝试克隆未实现Cloneable接口的实例会导致抛出CloneNotSupportedException异常。 Cloneable接口声明没有方法。...因此Cloneable的诞生是为了表明程序员的意图。所以,简而言之。 Cloneable的目的不是表明你有一个公共clone()方法。

39640

和 lvgo 一起学设计模式(四)创建型之原型模式

通过 cloneable 接口实现原型模式 public class Graphics implements Cloneable { private final String color;...实现了 cloneable 接口,可以克隆一个区别于当前对象的另外一个新的对象,但对于对象中的引用,却不能进行克隆,你虽得到了他的人,但你却得不到他的心,如果想要得到他的心怎么办?拿钱砸他!...但是前提是他的心允许克隆(实现了 cloneable 接口)。...接口 // 引用类型实现了 cloneable 接口 public class Size implements Cloneable { public int width; public...优势: JDK 的 cloneable 接口是基于内存数据的直接复制,速度相较于 new 关键字创建对象更加快速;同时简化了创建过程(不会执行构造方法)。

36920

Effective.Java 读书笔记(11)关于clone方法

11.Override clone judiciously 大意为 明智地重写clone方法 说到clone方法,我们来提一提Cloneable这个接口,这个接口是用来作为一种标记某对象允许被clone...你并不应该仅仅由于实现了Cloneable接口就去直接调用一个对象的clone方法。...的异常 一个接口这样被使用是极其罕见的,从未见过其他的接口有这样的作用 一般来说,实现一个接口是用来让这个能够做某些事情,而Cloneable则是修改了父类的protected方法的实现,如果实现Cloneable...Note that all arrays are considered to implement the interface Cloneable and that the return type of...的接口,这样就给了子类自由,让子类决定是否去实现cloneable接口 还需要提及的就是,当你想编写一个线程安全的类,并且这个类继承了Cloneable的接口的话,你就应该对clone方法进行同步的说明

42720

Java中clone( )和new效率哪个更高?

前提是类实现Cloneable接口,Cloneable接口没有任何方法,是一个空接口,也可以称这样的接口为标志接口,只有实现了该接口,才会支持clone操作。...Object中有一个clone方法,为什么还必须要实现Cloneable接口呢,这就是cloneable接口这个标志接口的意义,只有实现了这个接口才能实现复制操作, 因为jvm在复制对象的时候,会检查对象的类是否实现了...Cloneable这个接口,如果没有实现,则会报CloneNotSupportedException异常。...例如: package com.miivii.javalib; public class Bean implements Cloneable { private String name;...只是修改Bean,其他不变再看打印 package com.miivii.javalib; public class Bean implements Cloneable { private

94110

漫画:什么是 “原型模式” ?

过了一段时间,我们来观察一下本体与分身的生存状态: 在Java语言中,Object类实现了Cloneable接口,一个对象可以通过调用Clone()方法生成对象,这就是原型模式的典型应用。...但需要注意的是,clone()方法并不是Cloneable接口里的,而是Object类里的,Cloneable是一个标识接口,标识这个类的对象是可被拷贝的,如果没有实现Cloneable接口,却调用了clone...(this instanceof Cloneable)) {        throw new CloneNotSupportedException("Class " + getClass().getName...() +" doesn't implement Cloneable");    }    return internalClone();}// Native helper method for cloning.private...// 乡镇街道        public String street;    } } // 这是一个更复杂的、支持深拷贝的用户类 public class User implements Cloneable

16210

java深拷贝的实现方式_接口可以创建对象吗

Cloneable接口与Serializable接口都是定义接口而没有任何的方法。Cloneable可以实现对象的克隆复制,Serializable主要是对象序列化的接口定义。...JDK提供的Cloneable接口正是为了解决对象复制的问题而存在。Cloneable结合Serializable接口可以实现JVM对象的深度复制。...Java JDK定义的接口 本文涉及到的两个接口都是功能定义接口没有实际的方法声明: java.lang.Cloneable /* * Copyright (c) 1995, 2004, Oracle...{ } Cloneable接口是一个空接口,仅用于标记对象,Cloneable接口里面是没有clone()方法,的clone()方法是Object类里面的方法!...接口对Java对象进行克隆 实现克隆的步骤: 1.让该类实现java.lang.Cloneable接口; 2.

1.4K10
领券