Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में क्लोन () विधि का महत्व?

क्लोन () विधि का उपयोग किसी वर्ग के ऑब्जेक्ट की प्रतिलिपि बनाने के लिए किया जाता है जो क्लोनेबल . को लागू करता है इंटरफेस। डिफ़ॉल्ट रूप से, यह फ़ील्ड-दर-फ़ील्ड कॉपी . करता है चूंकि ऑब्जेक्ट क्लास को उस विशेष वर्ग के सदस्यों के बारे में कोई जानकारी नहीं है, जिनकी वस्तुएं इस विधि को बुलाती हैं। इसलिए, यदि कक्षा में केवल आदिम डेटा प्रकार के सदस्य हैं तो वस्तु की एक नई प्रति बनाई जाएगी और नई वस्तु प्रति का संदर्भ वापस कर दिया जाएगा। लेकिन, यदि कक्षा में किसी भी वर्ग प्रकार के सदस्य हैं तो केवल उन सदस्यों के ऑब्जेक्ट संदर्भों की प्रतिलिपि बनाई जाती है और इसलिए मूल ऑब्जेक्ट के साथ-साथ क्लोन ऑब्जेक्ट दोनों में सदस्य संदर्भ एक ही ऑब्जेक्ट को संदर्भित करते हैं।

हमें एक CloneNotSupportedException . मिलेगा अगर हम क्लोन () . को कॉल करने का प्रयास करते हैं किसी वर्ग के किसी ऑब्जेक्ट पर विधि जो क्लोनेबल . को लागू नहीं करती है इंटरफेस। यह इंटरफ़ेस एक मार्कर इंटरफ़ेस . है और इस इंटरफ़ेस का कार्यान्वयन केवल यह दर्शाता है कि Object.clone() विधि को कार्यान्वयन वर्ग की वस्तुओं पर बुलाया जा सकता है।

सिंटैक्स

protected Object clone() throws CloneNotSupportedException

हम दो तरीकों से क्लोन () विधि को लागू कर सकते हैं

उथली कॉपी

यह Object.clone() . द्वारा प्रदान की गई डिफ़ॉल्ट क्लोनिंग कार्यक्षमता का परिणाम है विधि यदि कक्षा में गैर-आदिम डेटा प्रकार के सदस्य भी हैं। शैलो कॉपी के मामले में, क्लोन किया गया ऑब्जेक्ट भी उसी ऑब्जेक्ट को संदर्भित करता है, जिसे मूल ऑब्जेक्ट संदर्भित करता है क्योंकि केवल ऑब्जेक्ट संदर्भ कॉपी किए जाते हैं, न कि संदर्भित ऑब्जेक्ट।

उदाहरण

public class ShallowCopyTest {
   public static void main(String args[]) {
      A a1 = new A();
      A a2 = (A) a1.clone();
      a1.sb.append("Tutorialspoint!");
      System.out.println(a1);
      System.out.println(a2);
   }
}
class A implements Cloneable {
   public StringBuffer sb = new StringBuffer("Welcome to ");
      public String toString() {
         return sb.toString();
      }
   public Object clone() {
      try {
         return super.clone();
      } catch(CloneNotSupportedException e) {
      }
      return null;
   }
}

आउटपुट

Welcome to Tutorialspoint!
Welcome to Tutorialspoint!


डीप कॉपी

हमें क्लोन() . को ओवरराइड करना होगा गैर-आदिम प्रकार के सदस्यों वाली कक्षाओं के लिए डीप कॉपी . प्राप्त करने की विधि क्योंकि इसमें सदस्य वस्तुओं को भी क्लोन करने की आवश्यकता होती है, जो कि डिफ़ॉल्ट क्लोनिंग तंत्र द्वारा नहीं किया जाता है।

उदाहरण

public class DeepCopyTest {
   public static void main(String args[]) {
      A a1 = new A();
      A a2 = (A) a1.clone();
      a1.sb.append(" TutorialsPoint!");
      System.out.println(a1);
      System.out.println(a2);
   }
}
class A implements Cloneable {
   public StringBuffer sb = new StringBuffer("Welcome to ");
   public String toString() {
      return sb.toString();
   }
   public Object clone() {
      try {
         A a = (A) super.clone();
         a.sb = new StringBuffer(sb.toString());
         return a;
      }
      catch(CloneNotSupportedException e) {
      }
      return null;
   }
}

आउटपुट

Welcome to TutorialsPoint!
Welcome to

  1. जावा में थ्रेड क्लास की ज्वाइन () विधि

    शामिल हों फ़ंक्शन - जॉइन विधि यह सुनिश्चित करती है कि वर्तमान थ्रेड तब तक प्रतीक्षा करता है जब तक कि जिस थ्रेड से जुड़ना चाहिए उसे समाप्त कर दिया गया है। यह फ़ंक्शन तब तक प्रतीक्षा करता है जब तक कि जिस थ्रेड पर फ़ंक्शन को कॉल किया गया था, उसे समाप्त कर दिया गया है। सिंटैक्स final void join() throws

  1. isAlive() जावा प्रोग्रामिंग में थ्रेड क्लास की विधि

    इसअलाइव फ़ंक्शन - इसका उपयोग यह जांचने के लिए किया जाता है कि कोई धागा जीवित है या नहीं। जिंदा एक ऐसे धागे को संदर्भित करता है जो शुरू हो गया है लेकिन अभी तक समाप्त नहीं हुआ है। जब रन विधि को कॉल किया जाता है, तो थ्रेड एक विशिष्ट अवधि के लिए संचालित होता है जिसके बाद यह निष्पादित करना बंद कर देता है

  1. जावा 9 में जबरन () विधि को नष्ट करने का महत्व?

    जबरन नष्ट () विधि का उपयोग किसी प्रक्रिया को समाप्त करने . के लिए किया जा सकता है . यदि प्रक्रिया समाप्त हो गई है या जमी हुई है तो इसकी आवश्यकता होगी। उदाहरण के लिए, isAlive() नष्ट करने के बाद () . के बाद विधि सही हो जाती है कहा जाता है। जबरन नष्ट () यदि समाप्ति का सफलतापूर्वक अनुरोध किया जाता है, त