प्रौद्योगिकी साझेदारी

कृपया जावाभाषायां गभीरप्रतिलिपिः उथलप्रतिलिपिः च इति भेदं व्याख्यातव्यम् । जावादेशे अनामिकाः आन्तरिकवर्गाः के सन्ति ? तस्य अनुप्रयोगपरिदृश्याः के सन्ति ?

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

कृपया जावाभाषायां गभीरप्रतिलिपिः उथलप्रतिलिपिः च इति भेदं व्याख्यातव्यम् ।

जावा मध्ये Deep Copy तथा Shallow Copy इति वस्तुनां प्रतिलिपिकरणस्य द्वौ मार्गौ स्तः वस्तुनां प्रतिलिपिं कुर्वन् तेषां व्यवहारः मूलतः भिन्नः भवति ।

उथल प्रतिलिपि

उथलं प्रतिलिपिः नूतनवस्तुनः निर्माणं ततः वर्तमानवस्तुनः अस्थिरक्षेत्राणां प्रतिलिपिं नूतनवस्तुनि निर्दिशति यदि क्षेत्रं मूल्यप्रकारः अस्ति, तर्हि क्षेत्रं बिट् बिट् प्रतिलिपिकृतं भवति, यदि क्षेत्रं सन्दर्भप्रकारः अस्ति सन्दर्भः प्रतिलिपितः अस्ति किन्तु न सन्दर्भितं वस्तु प्रतिलिपितः नास्ति। अतः मूलवस्तु तस्य प्रतिलिपिः च एकमेव वस्तु निर्दिशति ।

जावायां एतत् साधयितुं शक्यतेCloneableअन्तरफलकं पुनर्लेखनं चclone()उथलं प्रतिलिपिं कार्यान्वितुं विधिः।Objectकक्षायांclone()एषा पद्धतिः अतल्लीनप्रतिलिपिं प्राप्तुं शक्नोति ।

class Original implements Cloneable {
private int[] nums;
public Original() {
nums = new int[5];
}
public void setNums(int[] nums) {
this.nums = nums;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

अस्मिन् उदाहरणे .nums सन्दर्भप्रकारः अस्ति ।यदिOriginalवस्तु अतल्लीनप्रतिलिपिता, ततःnumsआदिवस्तुनि चnumsसमानं सरणीवस्तुं दर्शयिष्यति ।

गहन प्रतिलिपि

गहनप्रतिलिपिः न केवलं वस्तुनः एव प्रतिलिपिं करोति, अपितु वस्तुनि समाविष्टानां सर्वेषां सन्दर्भप्रकारस्य सदस्यचरानाम् पुनरावर्तनीयरूपेण प्रतिलिपिं करोति, यस्य अर्थः अस्ति यत् प्रतिलिपिः मूलवस्तु च किमपि सन्दर्भप्रकारस्य सदस्यचरं न साझां करिष्यति एकस्य वस्तुनः कस्यापि सदस्यचरस्य परिवर्तनेन अन्यस्य वस्तुनः प्रभावः न भविष्यति ।

जावा मध्ये गहनप्रतिलिपिनां कार्यान्वयनार्थं प्रायः सन्दर्भप्रकारस्य सर्वेषां सदस्यचरानाम् समुचितप्रतिलिपिः भवति इति सुनिश्चित्य कोडं मैन्युअल् रूपेण लिखितुं आवश्यकं भवति ।

class DeepCopied implements Cloneable {
private int[] nums;
public DeepCopied() {
nums = new int[5];
}
public void setNums(int[] nums) {
this.nums = nums;
}
@Override
public Object clone() throws CloneNotSupportedException {
DeepCopied copied = (DeepCopied) super.clone();
copied.nums = nums.clone(); // 对引用类型的成员变量也进行拷贝
return copied;
}
}

अस्मिन् उदाहरणे .numsसरणी अपि प्रतिलिपितः भवति, अतः मूलवस्तु प्रतिलिपिः च न साझाः भवन्तिnumsसरणी ।

सारांशं कुरुत

  • उथल प्रतिलिपिवस्तु एव तस्य अस्थिरक्षेत्राणि च प्रतिलिप्यन्ते, परन्तु सन्दर्भितवस्तूनि प्रतिलिपिताः न भवन्ति ।
  • गहन प्रतिलिपिन केवलं वस्तु एव तस्य अस्थिरक्षेत्राणि च प्रतिलिपिताः भवन्ति, अपितु सन्दर्भप्रकारस्य सर्वे सदस्यचराः पुनरावर्तनीयरूपेण प्रतिलिपिताः भवन्ति ।

गहनप्रतिलिपिः अथवा उथलप्रतिलिपिः उपयोक्तुं चयनं विशिष्टानुप्रयोगपरिदृश्यानां आवश्यकतानां च उपरि निर्भरं भवति ।


जावादेशे अनामिकाः आन्तरिकवर्गाः के सन्ति ? तस्य अनुप्रयोगपरिदृश्याः के सन्ति ?