本文目錄一覽:
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所以可以拷貝父親的私有變量。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258454.html