能请高手给我看一下我的Java程序吗,我的clone()方法怎么不好使啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能请高手给我看一下我的Java程序吗,我的clone()方法怎么不好使啊相关的知识,希望对你有一定的参考价值。
public class ArrayTssst
public static void main(String[] args)
// int[] a = new int[]1,15,3;
/*int[] b = a;
System.out.println(b[1]);*/
/* int[] b = new int[3];
System.arraycopy(a, 0, b, 0, a.length);
b[1] =55;
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
*/
Poin[] p1 = new Poin[]new Poin(1,1),new Poin(2,2),new Poin(3,3);
Poin[] p2 = new Poin[3];
/*System.arraycopy(p1, 0, p2, 0, p1.length);
p2[2].x = 44;
p2[2].y = 33;
for(int i=0;i<p1.length;i++)
System.out.println(p1[i]);
*/
p2 = p1.clone();
p2[2].x = 44;
p2[2].y = 33;
for(int i=0;i<p1.length;i++)
System.out.println(p1[i]);
class Poin implements Cloneable
int x;
int y;
Poin(int x,int y)
this.x = x;
this.y = y;
public String toString()
return "x = "+x+", y = "+y;
public Object clone()
Object o=null;
try
o = super.clone();
catch (CloneNotSupportedException e)
// TODO Auto-generated catch block
e.printStackTrace();
return o;
你想达到的效果是深克隆,如果你想实现深克隆,则需要重写clone方法
打个比方来讲深克隆和浅克隆。就用一筐苹果来讲,深克隆就是我们复杂了一筐苹果(一个筐和筐里的苹果),而浅克隆则只是复杂了一个筐,苹果则不能直接的反应在筐里。这个列子不是很恰当,不过你可以这么去理解深克隆和浅克隆。 参考技术A 对于数组这样的集合,如果要克隆的话,需要遍历里面的元素逐一克隆,这个是深克隆。还有一个方法就是用ObjectOutputStream 和ObjectInputStream也可以用来进行深克隆。 参考技术B jdk帮助文档里是 protected 类型的:
protected Object clone()
到了你这里变成:public Object clone()
那肯定会有问题了,你把protected 范围扩大了。
以上是关于能请高手给我看一下我的Java程序吗,我的clone()方法怎么不好使啊的主要内容,如果未能解决你的问题,请参考以下文章
将字符串转成整数的函数给我看一下吗,简单看一下代码基本功。要求:不要调用parseInt等转换函数
那位高手帮我看一下启动apache提示一下错误是怎么回事啊 系统是linux的
我想在 PL SQL 中接受用户输入并将其传递给程序,给我看一个简单的程序吗?