三九宝宝网宝宝百科宝宝知识

Java中包含引用数据类型对象的克隆实现

11月05日 编辑 39baobao.com

[合同中包装、运输标志和保证条款]7. Packing (包装条款) 包装条款要包括包装材料,具体要求以及其他要求。一般采用笼统表示和具体规定两种方式。通常只有在双方达到共识时才使用笼统表示方法。比如以下描述:cust...+阅读

在Ja中,要得到一个对象的完整拷贝不能通过"="实现,因为这样只实现了该对象的引用的拷贝,如果对该对象进行操作,针对的还是同一个对象。

那么,如何得到一个对象的拷贝?我们可以通过JAVA给我们提供的对象克隆机制来实现。并且不含引用类型的对象克隆实现与包含引用类型的对象的克隆实现有所不同。

首先,看一下只包含基本数据类型的对象的克隆实现(请看下面的代码)

class ObjectClone

{

public static void main(String[] args)

{

Student stu1=new Student(1,20,"zhangshan");

System.out.println(stu1);

Student stu2=(Student)stu1.clone();

stu2.name="lishi";

System.out.println(stu2);

System.out.println(stu1);

}

}

class Student implements Cloneable

{

int index;

int age;

String name;

Student(int index,int age,String name,Professor p)

{

this.index=index;

this.age=age;

this.name=name;

}

public Object clone()

{

Object o=null;

try

{

o=super.clone();

return o;

}

catch(Exception e)

{

e.printStackTrace();

return null;

}

}

public String toString()

{

return "index="+index+","+"age="+age+","+"name="+name;

}

}

输出结果:

index=1,age=20,name=zhangshan

index=1,age=20,name=lishi

index=1,age=20,name=zhangshan

我们可以看到我们修改stu2的name成员时,没有影响到stu1,说明获得对象的拷贝成功。

下面我们继续看一下包含引用数据类型的对象的克隆实现。

/

要使一个类得到克隆功能有三步工作

1.重定基类的clone方法并声明为public类型。

2.在派生类的clone方法中调用super.clone()方法实现对象的克隆。

3.在派生类中实现Cloneable接口。

注意事项:

如果被克隆的对象中有引用类型的数据成员,那么该引用类型

也应该按以上三步实现克隆功能,考试大提示如下面的Professor。

2008-11-2 by Janker

/

class ObjectClone

{

public static void main(String[] args)

{

Professor p=new Professor("林教授",21);

Student stu1=new Student(1,20,"zhangshan",p);

System.out.println(stu1);

Student stu2=(Student)stu1.clone();

stu2.name="lishi";

stu2.p.name="张教授";

System.out.println(stu2);

System.out.println(stu1);

}

}

以下为关联文档:

为机房的老机自动批量克隆系统单位有两个计算机房,各有30台电脑,时间长了,好多电脑感染了病毒,运行速度很慢,有些软件也该升级了,因此我想把机房的电脑全部重装系统。但机房的电脑是三年前购买的,没有光驱、软驱...

克隆时代即将到来的带路人In the spring of 1999, ACT's new troika sat down to discuss just how to venture into what's arguably the most controversial area in medicine today." We knew tha...

推荐阅读
图文推荐