「javaclone好处」java clone方法原理

博主:adminadmin 2023-03-22 03:36:05 596

本篇文章给大家谈谈javaclone好处,以及java clone方法原理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java代码 clone()函数的作用是什么?

从楼主对回答的追问上发现,楼主的连JAVA基本的语法都很差啊。=号是赋值运算符,不是比较。

double[] vectorValue;

vectorValue = vectorValue.clone();

这个段代码执行肯定报错了。但他还的意思还是很明确的。

首先:double[] vectorValue;   这个是定义了一个double类型的数组变量vectorValue。

其次:vectorValue = vectorValue.clone();  //这个是将vectorValue 克隆一份,赋值给自己。也就是说vectorValue变量指向了新的一块内存区域。

举个例子可能更能说明问题。

public class TestMain implements Cloneable {

private int i ;

public TestMain(int i){

this.i = i ;

}

@Override

protected Object clone() {

// TODO Auto-generated method stub

return new TestMain(this.getI()+1);

}

public int getI() {

return i;

}

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

TestMain tm1 = new TestMain(1);

TestMain tm2  = tm1;

tm1 = (TestMain)tm1.clone();

System.out.println(tm1.getI()); //tm1指向的是通过clone()方法创建的新的对象的地址,i的值已经是2了。

System.out.println(tm2.getI()); //tm2指向的还是tm1创建时的地址,i的值为1

}

}

Java 中 如果clone为什么必须实现Cloneable接口

因为clone声明的方法是接口

所以实现接口的时候要全部实现接口所包含的全部方法这里的Cloneable接口就一个clone方法

所以是这样..补充点

public interface Cloneable此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。

如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。

按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。请参阅 Object.clone(),以获得有关重写此方法的详细信息。

注意,此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。

答案补充 是啊,这个时候实现的时候是根据用户自己去写里面的代码啊

接口都是里面只有函数的声明,没有函数的实现

所以这里的clone方法是用户自己去写的

....... 答案补充 接口就是只有函数声明,没有函数实现;

为什么要用这种,是因为在编写程序的时候一个类只能继承一个类,但是可以实现N个接口

举个例子:

interface yuyu

{

public void tt() throw Exception;

//这里定义为接口,就一定不能实现,实现会报错;

//这个只有在后面使用的时候再实现它,使用接口的目的是为了代码的紧凑,

//看起来比较直观....

}

public class demo implements yuyu

{

public void tt() throw Exception

{

//这里就要写代码进行具体实现!!!

//这里可以实现N个接口,但是这里只是实现了yuyu,但是继承只能继承一个

//还有这种的好处是,当很多类都要类似的方法的时候,

//都可以实现这个yuyu接口,而很多的代码就可以不写了,大概就是这些原因吧...

}

} 答案补充 java中不是什么空接口,比如说序列化的接口Serializable

这些具体含义以及作用

(序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。

可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。)

都是由JDK作用标识好了的,如果你不实现这个接口你将自己去写自己的那一套处理对象流的机制的规范

所以在这里就为java程序员提供了很大的好处(简便),不知道我上面说的,你能不能明白..

只有实现这个接口才能完成你要的功能...

Java中Object.clone方法的用途是什么?

clone方法是用来复制一个对象。不同于“=”。

对于值类型的数据是可以通过“=”来实现复制的。但是对于引用类型的对象,“=”只能复制其内存地址,使对象的引用指向同一个对象,而不会创建新的对象。clone则可以创建与原来对象相同的对象。举个例子:

有一个Car类

Car c1 = new Car();

Car c2 = c1;

这两句事实上只创建了一个对象。只不过c1和c2指向了同一个对象。

如果上面的两句改为:

Car c1 = new Car();

Car c2 = c1.clone();

那么就有了两个对象,而且这两个对象的内容是一样的。(所有的属性值相同)

同时,我想说的是一楼的使用,虽然程序本身没有错误,但是用date.clone()添加到list当中,会再次创建date的对象,消耗内存资源,这是编程的忌讳。特别是编写java程序,更要好好利用内存的有限资源,避免浪费。

关于javaclone好处和java clone方法原理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。