Wb clone nyob Java

Java Cloning

Java Cloning

Taw qhia

Lub interface nyob java Cloneable yog ib tug marker interface. Tias muaj txoj. Tab sis, yog hais tias peb sau ib chav kawm ntawv raws li nram qab no, Nws muab ib co lus qhia rau lub jvm tias tus kawm yuav tau cloned. Cov cai hauv qab no qhia tau hais tias ib tug yooj yim kwv cloning txoj kev –







[chaws]

pob com.Home.cloning;

pej xeem hoob CloneClass qiv Cloneable {

rau cov menyuam ib;

ob chav b;

// Hom no hu kwv lub clone().

CloneClass getClone() {

sim {

// hu rau clone hauv paj nruas.

rov qab mus (CloneClass) super.clone();

} ntes (CloneNotSupportedException e) {

Tsim.tawm.println (” Cloning tsis tau. ” );

rov qab mus no;

}

}

}

[/chaws]

Peb cia saib ob ntu hauv qab.

[chaws]

pob com.Home.cloning;

pej xeem hoob TestCloneObject {

pej xeem khoob lug testIface() {

CloneClass x1 = tshiab CloneClass();

CloneClass x2;

x1.a = 15;

x1.b = 35.05;

x2 = x1.getClone(); // clone x1

Tsim.tawm.println(” x1: ” + x1.a + ” ” + x1.b);

Tsim.tawm.println(” x2: ” + x2.a + ” ” + x2.b);

}

pej xeem zoo li qub khoob lug ntsiab(Txoj hlua args[]) {

TestCloneObject testCloneObject = tshiab TestCloneObject();

// yam kab mob no ntawm

testCloneObject.testIface();

}

}

Nyob rau hauv qhov piv txwv li hais los saum toj, nug [chaws] getClone [/chaws] txhua lub [chaws] clone [/chaws] txoj kev ua tus tsav haus dejcawv thiab rov cov kwv. Nws yuav tsum tau pom ntawm no hais tias lub twj paj nruas uas rov qab tuaj tom qab lub mechanism cloning tias yog hom casted rau nws yam tsim nyog tau, qhov no nws yog

[chaws] CloneClass [/chaws]

Yog hais tias lub hoob kawm yog tsis siv lub cloneable interface, thiab peb yuav ua tiag clone ntawd kwv peb tau ib

[chaws] CloneNotSupportedException [/chaws]

In the Process of cloning, tus constructor yog tsis hu ua theej ib pes tsawg daim qauv ntawm cov said tsim nruas. Tiam sis tus kwv uas qhov clone yog tsim, yuav tsum siv lub cloneable interface.

Tus hoob Tus kwv clone() txoj kev ua ib qho kev thiab rov luam tus kwv, nrog tib hoob kawm thiab nrog rau tag nrho cov teb muaj ib yaam tseem ceeb nuav. Txawm li cas los, [chaws] OBJECT.clone() [/chaws] throws ib [chaws] CloneNotSupportedException [/chaws] tsuas yog tus tsav haus dejcawv yog thaj ntawm hoob kawm uas implements cov marker interface Cloneable.

Lub neej ntawd yuav ua raws li [chaws] OBJECT.clone()[/chaws] tej lub hom phiaj lub daim ntawv ntiav. Yog tus kawm yuav tsum tau ib daim ntawv sib sib zog nqus los sis tej lwm yam kev cai coj cwj pwm, nws yuav tsum muaj cov customized [chaws] clone()[/chaws] txoj kev tom qab lawv tau ntawm daim ntawv luam ntawm cov superclass.







Qhov zoo ntawm cloning

Cloning mechanism tej yam ua hauj lwm ntxiv hauv tus tsim tawm thaum peb yuav tsum sau ib daim ntawv uas muaj ib yam twj paj nruas. Peb tsis xav kom koj hu rau tus [chaws] tshiab [/chaws] neeg teb xov tooj ntawm cov kwv. Tej yam li no cloning ntau ntxiv ua hauj lwm kev tsim tawm. Ib clone uas muaj ib yam twj paj nruas yog ib daim ntawv qhia kiag lub nruas.

Disadvantages ntawm cloning

Ib disadvantage ntawm cloning ntawd yog cov yam tuaj ntawm lub [chaws] clone [/chaws] yog ib txoj kev [chaws] Nruas [/chaws]. Li no ib yam casting yuav tsum tau rau tus tsav haus dejcawv created.

Lwm disadvantage yog tias tseem tsis tau mus saib tus [chaws] clone [/chaws] hom rau ib hom paub daws teeb. Feem ntau cov interfaces thiab paub daws teeb kev kawm rau Java tsis muaj kom meej rau ib tug pej xeem [chaws] clone [/chaws] txujci. Yog li ntawd, tus [chaws] clone [/chaws] txoj kev siv tsuas yog paub cov hoob kawm rau ib yam twj paj nruas, Nws yog ib qho txhaum txojcai abstraction ntawm kev siv lub ntaus cov generic tau. Piv txwv, yog ib tug muaj ib daim ntawv siv nyob rau hauv Java, ib qho yuav ua tau rau tus [chaws] clone [/chaws] txoj kev nyob uas siv vim daim ntawv qhia txog leej tsis muaj pej xeem clone() txujci. Feem ntau cov implementations ntawm daim ntawv zoo li ArrayList thiab LinkedList tag nrho muaj clone() txoj kev kom lawv, tab sis nws yuav phim thiab phem abstraction lub neej nyob ib ncig ntawm cov hoob kawm seb ib yam twj paj nruas.

Cloning yog ib tes hauj lwm uas yus, thaum nws yuav muaj ib co tshuaj los unintended. e.g, yog tus tsav haus dejcawv cloned yog muaj ib tug siv kuj tsis paub meej hais tias refObject, hauv ces tus tsav haus dejcawv cloned, refObject yuav tau siv rau ntawm ib yam khoom uas yog tus tsav haus dejcawv yuavtsum yog referring rau. Yog tus clone zoo hloov ua tus txheem ntawm tus refObject, ces cov kev hloov yuav tsum reflected nyob hauv lub yeej yam twj paj nruas thiab. Saib qhov piv txwv nram qab no – Yog hais tias ib yam twj paj nruas opens ib I/O kwj thiab no ces cloned, ces ob leeg tsim muaj ntawm ob yam khoom yuav muaj peev xwm sawv kev khiav hauj lwm rau tib dej. Ntxiv, Yog hais tias ib yam khoom no muab kaw dej, ces dej yog kaw rau neb ob leeg thiab yog tus tsav haus dejcawv ob nws sau ntawv rau nws, qhov no ua rau ib qho kev ua yuam kev.

Vim cloning ua rau tej teeb meem, tus [chaws] clone [/chaws] txujci. Qhov no, [chaws] clone [/chaws] txoj kev yuav tsum tau hu ua ntawm nyob rau hauv ib chav kawm uas yog siv lub [chaws] cloneable [/chaws] interface qhov twg ntawm txoj kev koj hu lub [chaws] clone [/chaws] txoj kev yuav tau tiv thaiv, los nws yuav tsum tau ntsees overridden los ntawm cov hoob uas yog pej xeem. Nyob rau hauv qhov piv txwv li saum toj no peb pom cloning los ua tus [chaws] clone [/chaws] kev tiv thaiv. Cov piv txwv hauv qab no illustrates vib this cloning ntawm overriding –

[chaws]

pob com.Home.cloning;

pej xeem hoob CloneViaOverRiding qiv Cloneable {

rau cov menyuam ib;

ob chav b;

// clone() Yog tam sim no overridden thiab yog pej xeem.

pej xeem Kwv clone() {

sim {

// hu rau clone hauv paj nruas.

rov qab mus super.clone();

} ntes (CloneNotSupportedException e) {

Tsim.tawm.println(“Cloning tsis tau tso cai.”);

rov qab mus no;

}

}

}

[/chaws]

Tam sim no mus rau tom ntej piv txwv nram qab no.

[chaws]

pob com.Home.cloning;

pej xeem hoob TestCloneObject {

pej xeem khoob lug testPublic() {

CloneViaOverRiding x1 = tshiab CloneViaOverRiding();

CloneViaOverRiding x2;

x1.a = 10;

x1.b = 20.98;

// ntawm no, clone() hu ncaj nraim.

x2 = (CloneViaOverRiding) x1. clone ();

Tsim.tawm.println(“x1: ” + x1.a + ” ” + x1.b);

Tsim.tawm.println(“x2: ” + x2.a + ” ” + x2.b);

}

pej xeem zoo li qub khoob lug ntsiab(Txoj hlua args[]) {

TestCloneObject testCloneObject = tshiab TestCloneObject();

// ntsuam xyuas los ntawm pej xeem

testCloneObject.testPublic();

}

}

[/chaws]

Hauv qhov ua piv txwv rau txoj kev, nug [chaws] clone [/chaws] ntawm tus tsav haus dejcawv hoob kawm yog overridden uas vim nws yog tus me pej xeem in contrast to tus piv txwv txiav li, qhov twg qhov [chaws] getClone [/chaws] yog tsis muaj cov ntaub modifiers ua puas siv tau rau kev pob lawm xwb.

Nyob tog twg los cov le caag ob, siv lub tswv yim tus cloneable interface yog koj tus Individual.

Cov kev mob tshwm sim los ntawm cloning mas tej zaum nyuaj los xyuas nyob rau theem pib. Nws yog ib qho yooj yim uas koj xav tau tias hoob kawm no rau cloning thaum nws ua tau tsis zoo. Feem ntau, yog tsis paub nkawd cov chaw kom muaj kev rau Cloneable interface rau tej chav kawm ntawv uas tsis muaj ib tug ua hauj lwm tau av .







Lwm txoj rau cloning

Cloning mechanism muaj ob peb cawm –

  • daim constructor – ib daim constructor yog ib constructor uas lees txais lwm lom ntawm cov chav kawm ntawv tib yam li ib parameter.
  • koom xwm txoj kev – cov kev no muaj tsis yeej tsim nyog thaum ntau yam piav seb cov kwv cloned no tsis paub ua ntej.
  • Siv cov serialization thiab deserialization yog dua lwm txoj kev los siv clone.

Xaus

  • Kwv cloning yog lub mechanism uas tsim tau ib daim qauv ntawm tus kwv uas twb muaj lawm
  • Raws li hauv daim qauv ntiav mechanism cloning
  • Kaw yam tej seem paub tab ntawm tus tsim tawm
  • Thaum ua tus cloning yog tus tsav haus dejcawv tsim clone yog yam yuav tsum tau txhaj rau ntsees casted nyob rau qhov yuav tsum tau
  • Cloning muaj tej kev phiv los sis e.g yog ib yam twj paj nruas uas yog cloned muaj ib tug siv rau lwm yam twj paj nruas, thiab cov tshiab cloned kwv modifies cov twj paj nruas uas tau hais los, ces tus tsav haus dejcawv yeej kuj tau hloov.
  • Cloning mechanism muaj ib co cawm – cov tsab ntawv constructor, koom xwm txoj kev, serialization thiab de-serialization.
Tagged: ,
============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share