जावा ऑब्जेक्ट क्लोन ()

जावा ऑब्जेक्ट क्लोन () विधि ऑब्जेक्ट की उथली प्रति बनाता है।

यहां, उथली प्रतिलिपि का मतलब है कि यह एक नई वस्तु बनाता है और ऑब्जेक्ट से जुड़े सभी क्षेत्रों और विधियों की प्रतिलिपि बनाता है।

clone()विधि का सिंटैक्स है:

 object.clone()

क्लोन () पैरामीटर

clone()विधि कोई पैरामीटर नहीं लेता है।

क्लोन () वापसी मान

  • वस्तु की प्रति लौटाता है
  • CloneNotSupportedExceptionयदि ऑब्जेक्ट क्लास Cloneableइंटरफ़ेस को लागू नहीं करता है तो फेंकता है

नोट : Objectवर्ग लागू नहीं करता है Cloneable। इसलिए, हम कक्षा clone()की वस्तु के लिए विधि नहीं कह सकते Object

उदाहरण 1: जावा क्लोन ()

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 ) catch (Exception e) ( System.out.println(e); ) ) )

उपरोक्त उदाहरण में, हमने मेन नामक एक वर्ग बनाया है। कक्षा में दो फ़ील्ड नाम और संस्करण शामिल हैं। यहाँ, हमने क्लास के ऑब्जेक्ट्स को क्लास के ऑब्जेक्ट obj1 का उपयोग करके इनिशियलाइज़ किया है।

लाइन नोटिस करें,

 Main obj2 = (Main)obj1.clone();

यहाँ, हमने clone()obj1 की प्रतिलिपि बनाने के लिए विधि का उपयोग किया है । द्वारा दिया गया मान clone()ऑब्जेक्ट obj2 को सौंपा गया है। चूंकि वापसी clone()का Objectप्रकार है, इसलिए हमने (Main)इसे मुख्य प्रकार में बदलने के लिए उपयोग किया है।

अब ऑब्जेक्ट obj2 का उपयोग करके फ़ील्ड नाम और संस्करण को एक्सेस किया जा सकता है। हालाँकि अगर हम obj2 का उपयोग करते हुए फ़ील्ड का मान बदलते हैं, तो obj1 से जुड़े मान को परिवर्तित नहीं किया जाएगा।

उदाहरण 2: क्लोन किए गए ऑब्जेक्ट का उपयोग करके मूल्य बदलना

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create a clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 // changing value of name // using obj2 obj2.name = "Python"; System.out.println(obj2.name); // Python // check if value associated // with obj1 is changed System.out.println(obj1.name); // Java ) catch (Exception e) ( System.out.println(e); ) ) )

लाइन नोटिस करें,

 obj2.name = "Python";

यहां, हमने obj2 का उपयोग करते हुए चर का मान बदल दिया है। अब जब हम obj1 और obj2 दोनों के लिए वैरिएबल नाम प्रिंट करते हैं, तो हम देख सकते हैं कि obj1 का मान नहीं बदला है। ऐसा इसलिए है क्योंकि clone()विधि वस्तुओं की उथली प्रतिलिपि बनाती है।

उथले प्रति पर अधिक जानने के लिए, जावा में Shallow Copy क्या है?

हमने clone()Java try… catch block के अंदर का तरीका संलग्न किया है । यह इसलिए है क्योंकि यदि ऑब्जेक्ट क्लोन नहीं किया जा सकता है तो उप-वर्ग अपवाद को फेंक सकता है।

नोट : Objectजावा में सभी वर्गों के लिए वर्ग सुपरक्लास है। इसलिए, प्रत्येक वर्ग और सरणियाँ clone()विधि को लागू कर सकते हैं ।

दिलचस्प लेख...