
正文
java代码clone,java代码怎么运行
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java如何实现对象的深克隆?
1、⑵Java中对象的克隆①为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。②在派生类中覆盖基类的clone()方法,并声明为public。③在派生类的clone()方法中,调用super.clone()。④在派生类中实现Cloneable接口。
2、常用的方法有两种,第一,需克隆的对象实现cloneable接口;第二,使用commons包提供的克隆方法。
3、deepcopy的比较简单的实现方法是所有的类都实现 java.lang.Cloneable 接口。 这样就可以直接clone。否则只能自己遍历,再new了。
4、java本身好像没有提供这个方法的吧,只有你自己重新创建一个对象,然后赋值给这个对象。
5、java复制对象:使用clone。对象可克隆的类必须实现Cloneable接口,并且clone方法是浅克隆。类实现Serializable,用ObjectOutputStream、ObjectInputStream 来复制对象。
相关问答
Q1: java里clone方法的问题
1、因为在java.lang.Object类的定义里,clone()这个方法是protected,按照protected的访问控制范围规定,只能是当前类,或当前包,或其他包的子类,这三种情况能访问。注意这里的”能访问“都是通过原有对象访问的。
2、对于第二点,也要 观察Object类中的clone()还是一个protected属性的方法。这也意味着如果要应用clone()方法,必须继承Object类,在 Java中所有的类是缺省继承Object类的,也就不用关心这点了。然后重载clone()方法。
3、深度克隆的问题,如果类中成员包含集合类,如list等,或者包含map的,默认的clone方法为浅克隆,不会复制集合中的元素。如果复写clone方法,则可根据需求来复制成员。
4、看了java的规范,理论上任何JDK都应该实现Object.clone()的。那么反过来考虑,如果要产生你那个NullPointerException,必须使clone()返回null,那么只有两种可能: Object.clone()返回null或者抛出异常。
5、自己写Cloneable接口,改名为Shape,避免跟java.lang.Cloneable重名,否则java就近原则,会引用你写的接口。
6、不实现Cloneable接口而直接调用Object.clone方法是会抛出CloneNotSupportedException的。
Q2: java的clone方法
Java的clone()方法⑴clone方法将对象复制了一份并返回给调用者。
实现Cloneable接口的类应该使用公共方法重写 Object.clone(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
重载clone()方法 Object父类有个clone()的拷贝方法,不过它是protected类型的,我们需要重写它并修改为public类型。除此之外,子类还需要实现Cloneable接口来告诉JVM这个类是可以拷贝的。
Q3: 浅析Java中的深拷贝与浅拷贝
浅拷贝就是指对象复制的时候只复制一层;深拷贝是指复制对象的所有层级。深拷贝和浅拷贝,主要是对象发生复制的时候,根据复制的层级不同来区分的。很多人在这里经常变量赋值发生混淆。
浅拷贝:默认的拷贝就是浅拷贝。 仅仅多了个指针指向原来的空间。深拷贝:自己写的拷贝,自己申请了动态内存空间,用了new 或 malloc 。不但多了指针,而且多了空间。
浅拷贝可以使用列表自带的copy()函数(如list.copy()),或者使用copy模块的copy()函数。深拷贝只能使用copy模块的deepcopy(),所以使用前要导入:from copy import deepcopy。
浅拷贝 指的是你的类本身被拷贝,而没有拷贝类本身属性中的类 深拷贝 指的是包含类本身和属性类在内的所有类的拷贝。简单点说:就是浅拷贝的两个对象中的属性还会指向同一个类,而深拷贝则全部单独了。
关于java代码clone和java代码怎么运行的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






