本文目录一览:
java clone 怎么调用
Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,特别是先学c、c++后学java的程序员。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。比如函数参数类型是自定义的类时,此时便是引用传递而不是值传递。以下是一个小例子:
public class A {
public String name;
}
public class testClone {
public void changeA(A a){
a.name="b";
}
public void changInt(int i){
i=i*2+100;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
testClone test=new testClone();
A a=new A();
a.name="a";
System.out.println("before change : a.name="+a.name);
test.changeA(a);
System.out.println("after change : a.name="+a.name);
int i=1;
System.out.println("before change : i="+i);
test.changInt(i);
System.out.println("after change : i="+i);
}
}
Java中是如何实现克隆
java 实现clone对象方法的步骤如下:
(1)实现Cloneable接口
(2)重载Object类中的clone()方法,重载时需定义为public
(3)在重载方法中,调用super.clone()
例如:
class CloneClass implements Cloneable {
public int aInt;
public Object clone() {
CloneClass o = null;
try {
o = (CloneClass) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
java 编程clone方法
1、Cloneable接口只是个标记接口,里面没有任何实现方法,不实现Cloneable接口也可以使用Object的clone方法
2、任何类都是Object的子类,在子类里当然可以直接调用clone方法,比如super.clone()
3、注意clone方法用native修饰,表明该方法有方法体只是调用的jre外部方法,一般是用C语言实现,其作用是通过jvm和操作系统底层交互
4、参照3
Java中clone方法的疑问
因为在java.lang.Object类的定义里,clone()这个方法是protected,
按照protected的访问控制范围规定,只能是当前类,或当前包,或其他包的子类,这三种情况能访问。
注意这里的”能访问“都是通过原有对象访问的。
你可能以为你代码里obj满足”其他包的子类“这个条件,错了,一旦new出来,就脱离了作用域了。而super仍是原有对象,因此可以访问父类Base乃至Object的保护的clone()方法。
javaclone会拷贝父类的私有成员变量吗
javaclone会拷贝父类的私有成员变量的,对于对象变量,使用clone仅能实现浅拷贝仅复制对象的在栈中的reference所以可以拷贝父亲的私有变量。