在java中,如何复制一个对象?比如说string对象

Python016

在java中,如何复制一个对象?比如说string对象,第1张

可以使用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文档

用extends继承,直接使用父类的变量,缺点:不能继承其他类

用getter,通过getter获取变量,缺点:过多setter和getter容易破坏代码的可维护性

创建类的实例,然后调用实例的值,缺点:如果长时间不用实例化的对象,会被自动回收

适用reflection反射机制,导入java.lang.reflect包,以此来调用类里面的变量,缺点:开发环境不可以有安全限制,可移植性差

用接口,把变量放到一个接口里面,然后共享数据的类实现这个接口,缺点:暂时没想到

直接无视1楼

实现Cloneable接口,重载clone方法即可

public class A implements Cloneable {

public String name

public Object clone() {

A o = null

try {

o = (A) super.clone()

} catch (CloneNotSupportedException e) {

e.printStackTrace()

}

return o

}

}