క్లోనింగ్ అనేది ప్రతిరూపం లేదా కాపీని సృష్టించే ప్రక్రియ ఆబ్జెక్ట్, క్లోన్ పద్ధతి Java.lang.Object ఒక వస్తువు యొక్క కాపీ లేదా ప్రతిరూపాన్ని సృష్టించడానికి ఉపయోగిస్తారు. క్లోనబుల్ ఇంటర్ఫేస్ను అమలు చేసే జావా వస్తువులు క్లోన్ పద్ధతిని ఉపయోగించడానికి అర్హులు. ఈ వ్యాసంలో, నిస్సార కాపీ మరియు డీప్ కాపీని ఈ క్రింది క్రమంలో చర్చిస్తాము:
system.exit (0) ను ప్రోగ్రామ్ను ముగించడానికి ఉపయోగించవచ్చు.
- జావా ఆబ్జెక్ట్ యొక్క కాపీని సృష్టిస్తోంది
- నిస్సార కాపీ అంటే ఏమిటి?
- డీప్ కాపీ అంటే ఏమిటి?
- నిస్సార కాపీ మరియు డీప్ కాపీ మధ్య వ్యత్యాసం
జావా ఆబ్జెక్ట్ యొక్క కాపీని సృష్టిస్తోంది
మేము జావా ఆబ్జెక్ట్ యొక్క ప్రతిరూపాన్ని లేదా కాపీని సృష్టించవచ్చు
1. వస్తువు యొక్క కాపీని వేరే మెమరీ స్థానంలో సృష్టించడం. దీనిని డీప్ కాపీ అంటారు.
2. ఒకే మెమరీ స్థానాన్ని సూచించే క్రొత్త సూచనను సృష్టించడం. దీనిని నిస్సార కాపీ అని కూడా అంటారు.
నిస్సార కాపీ
క్లోన్ పద్ధతి యొక్క డిఫాల్ట్ అమలు సోర్స్ ఆబ్జెక్ట్ యొక్క నిస్సార కాపీని సృష్టిస్తుంది, దీని అర్థం టైప్ ఆబ్జెక్ట్ యొక్క క్రొత్త ఉదాహరణ సృష్టించబడింది, ఇది అన్ని ఫీల్డ్లను క్రొత్త ఉదాహరణకి కాపీ చేస్తుంది మరియు ‘ఆబ్జెక్ట్’ రకం కొత్త వస్తువును తిరిగి ఇస్తుంది. ఈ ఆబ్జెక్ట్ ఆబ్జెక్ట్ రకం సోర్స్ ఆబ్జెక్ట్లో స్పష్టంగా టైప్కాస్ట్ కావాలి.
ఈ వస్తువు ఆదిమ రకం మరియు ఆబ్జెక్ట్ రిఫరెన్స్లతో సహా సోర్స్ ఆబ్జెక్ట్ యొక్క అన్ని ఫీల్డ్ల యొక్క ఖచ్చితమైన కాపీని కలిగి ఉంటుంది. మూల వస్తువు క్షేత్రంలోని ఇతర వస్తువులకు ఏదైనా సూచనలు కలిగి ఉంటే, క్రొత్త సందర్భంలో ఆ వస్తువులకు సూచనలు మాత్రమే ఉంటాయి, ఆ వస్తువుల కాపీ సృష్టించబడదు. దీని అర్థం మనం నిస్సార కాపీలో మార్పులు చేస్తే మార్పులు మూల వస్తువులో ప్రతిబింబిస్తాయి. రెండు సందర్భాలు స్వతంత్రంగా లేవు.
ఆబ్జెక్ట్ క్లాస్లో క్లోన్ పద్ధతి ప్రకృతిలో రక్షించబడింది, కాబట్టి అన్ని తరగతులు క్లోన్ () పద్ధతిని ఉపయోగించలేవు. మీరు క్లోనబుల్ ఇంటర్ఫేస్ను అమలు చేయాలి మరియు క్లోన్ పద్ధతిని భర్తీ చేయాలి. క్లోనబుల్ ఇంటర్ఫేస్ అమలు చేయకపోతే, మీరు క్లోన్నోట్సపోర్టెడ్ఎక్సెప్షన్.సూపర్.క్లోన్ () ఆబ్జెక్ట్ క్లాస్లో అమలు ప్రకారం నిస్సార కాపీని తిరిగి పొందుతారు.
నిస్సార కాపీ కోసం కోడ్
ప్యాకేజీ com.test క్లాస్ డిపార్ట్మెంట్ {స్ట్రింగ్ ఎంపీడ్ స్ట్రింగ్ గ్రేడ్ స్ట్రింగ్ హోదా పబ్లిక్ డిపార్ట్మెంట్ (స్ట్రింగ్ ఎంపిడ్, స్ట్రింగ్ గ్రేడ్, స్ట్రింగ్ హోదా) {this.empId = empId this.grade = గ్రేడ్ this.designation = హోదా}} క్లాస్ ఎంప్లాయీ క్లోన్ చేయదగిన {int id స్ట్రింగ్ పేరు డిపార్ట్మెంట్ డిపార్ట్మెంట్ పబ్లిక్ ఎంప్లాయీ (పూర్ణాంక ఐడి, స్ట్రింగ్ పేరు, డిపార్ట్మెంట్ డిపార్ట్మెంట్) {this.id = id this.name = name this.dept = dept} // క్లోన్ () పద్ధతి యొక్క డిఫాల్ట్ వెర్షన్. ఇది ఒక వస్తువు యొక్క నిస్సార కాపీని సృష్టిస్తుంది. రక్షిత ఆబ్జెక్ట్ క్లోన్ () క్లోన్నోట్సపోర్టెడ్ ఎక్సెప్షన్ {రిటర్న్ సూపర్.క్లోన్ ()}} పబ్లిక్ క్లాస్ షాలోకోపీఇన్జావా {పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్ (స్ట్రింగ్ [] అర్గ్స్) {డిపార్ట్మెంట్ డిపార్ట్ 1 = కొత్త డిపార్ట్మెంట్ ('1', 'ఎ', 'ఎవిపి') ఉద్యోగి emp1 = క్రొత్త ఉద్యోగి (111, 'జాన్', dept1) ఉద్యోగి emp2 = శూన్య ప్రయత్నం {// emp1 యొక్క క్లోన్ను సృష్టించి, emp2 కు కేటాయించడం emp2 emp2 = (ఉద్యోగి) emp1.clone ()} క్యాచ్ (క్లోన్నోట్సపోర్టెడ్ ఎక్సెప్షన్ ఇ) {ఇ. printStackTrace ()} // 'emp1' System.out.println (emp1.dept.designation) యొక్క హోదాను ముద్రించడం // అవుట్పుట్: AVP // 'emp2' యొక్క హోదాను మార్చడం emp2.dept.designation = 'డైరెక్టర్' // ఈ మార్పు అసలు ఉద్యోగి 'emp1' System.out.println (emp1.dept.designation) లో ప్రతిబింబిస్తుంది // అవుట్పుట్: డైరెక్టర్}}
అవుట్పుట్:
పై ఉదాహరణలో, మాకు మూడు క్లాస్ వేరియబుల్ ఐడి (పూర్ణాంకం), పేరు (స్ట్రింగ్) మరియు విభాగం (విభాగం) ఉన్న ఎంప్లాయీ క్లాస్ ఎంపి 1 ఉంది.
నిస్సారమైన కాపీని సృష్టించడానికి మేము ఇప్పుడు emp1 కు emp2 కు క్లోన్ చేసాము, ఆ తరువాత మేము emp2 ఆబ్జెక్ట్ ఉపయోగించి హోదాను మార్చాము మరియు అదే మార్పులు emp1 లో కూడా ప్రతిబింబిస్తాయని ధృవీకరించాము.
డీప్ కాపీ
ఒక వస్తువు యొక్క లోతైన కాపీలో నిస్సారమైన కాపీ వంటి సోర్స్ ఆబ్జెక్ట్ యొక్క అన్ని క్షేత్రాల యొక్క ఖచ్చితమైన కాపీ ఉంటుంది, కాని సాలో కాపీకి భిన్నంగా సోర్స్ ఆబ్జెక్ట్ ఆబ్జెక్ట్కు ఫీల్డ్స్గా ఏదైనా సూచన ఉంటే, క్లోన్ అని పిలవడం ద్వారా ఆబ్జెక్ట్ యొక్క ప్రతిరూపం సృష్టించబడుతుంది. పద్ధతి. దీని అర్థం మూలం మరియు గమ్యం వస్తువులు రెండూ ఒకదానికొకటి స్వతంత్రంగా ఉంటాయి. క్లోన్ చేసిన వస్తువులో చేసిన ఏదైనా మార్పు మూల వస్తువుపై ప్రభావం చూపదు.
డీప్ కాపీ కోసం కోడ్
ప్యాకేజీ com.test క్లాస్ డిపార్ట్మెంట్ క్లోన్ చేయదగినది {స్ట్రింగ్ ఎంపైడ్ స్ట్రింగ్ గ్రేడ్ స్ట్రింగ్ హోదా పబ్లిక్ డిపార్ట్మెంట్ (స్ట్రింగ్ ఎంపిడ్, స్ట్రింగ్ గ్రేడ్, స్ట్రింగ్ హోదా) {this.empId = empId this.grade = గ్రేడ్ this.designation = హోదా} // క్లోన్ యొక్క డిఫాల్ట్ వెర్షన్ () పద్ధతి. రక్షిత ఆబ్జెక్ట్ క్లోన్ () క్లోన్నోట్ సపోర్ట్డ్ ఎక్సెప్షన్ విసురుతుంది {రిటర్న్ సూపర్.క్లోన్ ()}} క్లాస్ ఎంప్లాయీ క్లోన్ చేయదగిన {పూర్ణాంక ఐడి స్ట్రింగ్ పేరు డిపార్ట్మెంట్ డిపార్ట్మెంట్ పబ్లిక్ ఎంప్లాయీ (పూర్ణాంక ఐడి, స్ట్రింగ్ పేరు, డిపార్ట్మెంట్ డిపార్ట్మెంట్) {this.id = id this.name = name this.dept = dept} // ఒక వస్తువు యొక్క లోతైన కాపీని సృష్టించడానికి క్లోన్ () పద్ధతిని భర్తీ చేస్తుంది. రక్షిత ఆబ్జెక్ట్ క్లోన్ () క్లోన్నోట్సపోర్టెడ్ ఎక్సెప్షన్ విసురుతుంది {ఎంప్లాయీ ఎంప్ = (ఎంప్లాయీ) సూపర్.క్లోన్ () ఎంపి.డెప్ట్ = (డిపార్ట్మెంట్) డిప్ట్.క్లోన్ () రిటర్న్ ఎంప్}} పబ్లిక్ క్లాస్ డీప్ కాపిఇన్జావా {పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్ (స్ట్రింగ్ [] అర్గ్స్) { విభాగం dept1 = కొత్త విభాగం ('1', 'A', 'AVP') ఉద్యోగి emp1 = కొత్త ఉద్యోగి (111, 'జాన్', dept1) ఉద్యోగి emp2 = శూన్య ప్రయత్నం {// emp1 యొక్క క్లోన్ను సృష్టించి, emp2 కు కేటాయించడం emp2 = (ఉద్యోగి) emp1.clone ()} క్యాచ్ (క్లోన్నోట్ సపోర్ట్డ్ ఎక్సెప్షన్ ఇ) {e.printStackTrace ()} // 'emp1' System.out.println (emp1.dept.designation) యొక్క హోదాను ముద్రించడం // అవుట్పుట్: AVP / / 'Emp2' emp2.dept.designation = 'డైరెక్టర్' యొక్క హోదాను మార్చడం // ఈ మార్పు అసలు ఉద్యోగి 'emp1' System.out.println (emp1.dept.designation) లో ప్రతిబింబిస్తుంది // అవుట్పుట్: AVP}}
అవుట్పుట్:
డీప్ కాపీ యొక్క పై ఉదాహరణలో, నిస్సార కాపీకి భిన్నంగా, మూలం మరియు గమ్యం వస్తువులు రెండూ ఒకదానికొకటి స్వతంత్రంగా ఉంటాయి. Emp2 లో చేసిన ఏదైనా మార్పు emp1 ను ప్రభావితం చేయదు.
నిస్సార కాపీ మరియు డీప్ కాపీ మధ్య వ్యత్యాసం
నిస్సార కాపీ | డీప్ కాపీ |
క్లోన్ చేసిన వస్తువు మరియు మూల వస్తువు పూర్తిగా విడదీయబడవు | క్లోన్ చేసిన వస్తువులు మరియు మూల వస్తువులు ఒకదానికొకటి పూర్తిగా స్వతంత్రంగా ఉంటాయి. |
క్లోన్ చేసిన సందర్భంలో చేసిన మార్పులు మూల వస్తువు యొక్క రిఫరెన్స్ వేరియబుల్ను ప్రభావితం చేస్తాయి | క్లోన్ చేసిన సందర్భంలో చేసిన మార్పులు మూల వస్తువు యొక్క రిఫరెన్స్ వేరియబుల్ను ప్రభావితం చేయవు. |
క్లోన్ యొక్క డిఫాల్ట్ వెర్షన్ నిస్సార కాపీ | లోతైన కాపీని సృష్టించడానికి మనం ఆబ్జెక్ట్ క్లాస్ యొక్క క్లోన్ పద్ధతిని భర్తీ చేయాలి. |
వస్తువు యొక్క తరగతి వేరియబుల్స్ క్షేత్రాలుగా ఆదిమ రకంగా ఉంటే నిస్సార కాపీకి ప్రాధాన్యత ఇవ్వబడుతుంది | ఆబ్జెక్ట్ యొక్క క్లాస్ వేరియబుల్స్ ఇతర వస్తువులను ఫీల్డ్లుగా సూచించినట్లయితే లోతైన కాపీకి ప్రాధాన్యత ఇవ్వబడుతుంది. |
ఇది చాలా వేగంగా ఉంటుంది | ఇది చాలా నెమ్మదిగా ఉంటుంది. |
దీనితో, మేము నిస్సార కాపీ మరియు డీప్ కాపీ వ్యాసం చివరికి వస్తాము. రెండింటి మధ్య ఉన్న విభిన్న తేడాల గురించి మీకు అవగాహన వచ్చిందని నేను ఆశిస్తున్నాను.
చూడండి ప్రపంచవ్యాప్తంగా విస్తరించి ఉన్న 250,000 మందికి పైగా సంతృప్తికరమైన అభ్యాసకుల నెట్వర్క్తో విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు జావా డెవలపర్గా ఉండాలనుకునే విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించబడింది.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ “నిస్సార కాపీ మరియు డీప్ కాపీ” బ్లాగ్ యొక్క వ్యాఖ్యల విభాగంలో పేర్కొనండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.