「java获取对象副本」java中每个对象都有类的副本
今天给各位分享java获取对象副本的知识,其中也会对java中每个对象都有类的副本进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Java对象副本的问题
拷贝分为浅拷贝和深拷贝。
如果只是想拷贝List,可以使用clone()方法来完成。那么两个List使用==比较时返回false,但是两个List中的元素使用==比较还是返回true。这时你需要把添加到List中的元素所属类型重写一个clone()方法。例如ListStudent list = ...,list.clone()返回的只是List的拷贝,而Student如果没有重写clone()方法,那么就不能深拷贝。
当然,如果Student中有一个Addr类型的属性,并且该类没有重写clone()方法,那么也不能完成深拷贝。
就说这么些吧,有点累了。
java中获取对象的方法有哪些
在学习反射机制时,总结一下获得类对象方式:
第一种方式:通过类本身来获得对象
Java代码
Class classname =
this
.getClass();
第二种方式:通过子类的实例获取父类对象
Java代码
ClassName cn =
new
ClassName();
UserClass = cn.getClass();
Class SubUserClass = UserClass.getSuperclass();
第三种方式:通过类名加.class获取对象
Java代码
Class ForClass = **.**.ClassName.
class
;(类在包中的路径加.
class
)
第四种方式:通过类名的字符串获取对象
Java代码
Class ForName = Class.forName(
"**.**.ClassName"
);
在java中,如何复制一个对象?比如说string对象
可以使用clone来实现,clone用于为引用类型的复制
1.使用clone方法的类必须先实现Cloneable接口,不然clone方法会直接返回CloneNotSupportedException不支持克隆的异常
2、实现Cloneable接口的类应该使用公共方法重写 Object.clone(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
3、在Java.lang.Object类中克隆方法是这么定义的:
protected Object clone()
throws CloneNotSupportedException
创建并返回此对象的一个副本。表明是一个受保护的方法,同一个包中可见。
按照惯例,返回的对象应该通过调用 super.clone 获得。
详见关于clone的API文档
关于java获取对象副本和java中每个对象都有类的副本的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-26,除非注明,否则均为
原创文章,转载请注明出处。