रिकॉर्ड के लिए डिफ़ॉल्ट कंस्ट्रक्टर को परिभाषित करें


20

मेरे पास एक रिकॉर्ड है और मैं इसमें डिफॉल्ट कंस्ट्रक्टर जोड़ना चाहता हूं।

public record Record(int recordId) {
   public Record{

   }
}

लेकिन इसने इंट परम के साथ निर्माण किया।

public final class Record extends java.lang.Record{
    private final int recordId;
    public Record(int);
    //other method
}

हम डिफॉल्ट कंस्ट्रक्टर को रिकॉर्ड में कैसे जोड़ सकते हैं?


आपने जो परिभाषित किया है वह एक कॉम्पैक्ट कंस्ट्रक्टर है जिसे इसकी घोषणा रिकॉर्ड हेडर से प्राप्त होती है। कॉम्पैक्ट घटक में एक रिकॉर्ड घटक और संबंधित औपचारिक पैरामीटर के बीच नाम, प्रकार और परिवर्तनीयता में 1-1 मैच होता है, यही कैनोनिकल कंस्ट्रक्टर के लिए भी लागू होता है। एक रिकॉर्ड में केवल एक विहित कंस्ट्रक्टर हो सकता है। यदि कॉम्पैक्ट कंस्ट्रक्टर घोषित किया जाता है तो विहित कंस्ट्रक्टर है
विसेंट रोमेरो

जवाबों:


18

बालों को विभाजित करने के लिए, आप कभी भी डिफॉल्ट कंस्ट्रक्टर को परिभाषित नहीं कर सकते, क्योंकि कंपाइलर द्वारा डिफॉल्ट कंस्ट्रक्टर तब उत्पन्न किया जाता है, जब कोई कंस्ट्रक्टर परिभाषित नहीं होता है, इस प्रकार कोई भी परिभाषित कंस्ट्रक्टर डिफ़ॉल्ट रूप से नहीं होता है।

यदि आप कोई रिकॉर्ड नहीं बनाना चाहते हैं, तो कोई अतिरिक्त निर्माता या फ़ैक्टरी विधियाँ जोड़ने की अनुमति देता है , जब तक कि "कैनोनिकल कंस्ट्रक्टर" सभी रिकॉर्ड फ़ील्ड को तर्क के रूप में ले लेता है।

public record Record(int recordId) {
   public Record() {
      this(0); 
   }
}

17

स्पष्ट निर्माता

अपने मामले में, आप स्पष्ट रूप से एक डिफ़ॉल्ट मान के साथ विहित कंस्ट्रक्टर के प्रतिनिधिमंडल के साथ एक गैर-तर्क निर्माता निर्दिष्ट कर सकते हैं यदि आप चाहते हैं और यह किया जा सकता है -

public Record(){
    this(Integer.MIN_VALUE);
}

संक्षेप में, किसी भी गैर-विहित कंस्ट्रक्टर को एक को सौंपना चाहिए, और जो इन अभ्यावेदन के डेटा ले जाने की प्रकृति के लिए सही होना चाहिए।

कॉम्पैक्ट कंस्ट्रक्टर

दूसरी ओर, ध्यान दें कि आपने अपने कोड में जो प्रतिनिधित्व किया था।

public Record {}

एक "कॉम्पैक्ट कंस्ट्रक्टर" के रूप में कहा जाता है, जो सभी तर्कों को स्वीकार करने वाले एक कंस्ट्रक्टर का प्रतिनिधित्व करता है और इसका उपयोग रिकॉर्ड के गुणों के रूप में प्रदान किए गए डेटा को मान्य करने के लिए भी किया जा सकता है। एक कॉम्पैक्ट कंस्ट्रक्टर, कैनोनिकल कंस्ट्रक्टर घोषित करने का एक वैकल्पिक तरीका है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.