"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लोम्बोक अनलीशेड: गेटर्स, सेटर्स, कंस्ट्रक्टर्स, बिल्डर्स और अन्य के साथ जावा दक्षता को बढ़ाना

लोम्बोक अनलीशेड: गेटर्स, सेटर्स, कंस्ट्रक्टर्स, बिल्डर्स और अन्य के साथ जावा दक्षता को बढ़ाना

2024-07-30 को प्रकाशित
ब्राउज़ करें:302

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

प्रोजेक्ट लोम्बोक का परिचय

प्रोजेक्ट लोम्बोक एक लोकप्रिय जावा लाइब्रेरी है जिसका उद्देश्य संकलन समय के दौरान सामान्य जावा कोड को स्वचालित रूप से उत्पन्न करने के लिए एनोटेशन प्रदान करके बहुत सारा समय और उनकी ऊर्जा बचाकर बॉयलरप्लेट कोड को कम करना और कोडर्स की उत्पादकता को बढ़ाना है।

प्रोजेक्ट लोम्बोक क्या है?

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

हम प्रोजेक्ट लोम्बोक का उपयोग क्यों कर रहे हैं?

जावा में प्रोजेक्ट लोम्बोक का उपयोग करने से कई आकर्षक लाभ मिलते हैं जो बेहतर उत्पादकता, कोड गुणवत्ता और रखरखाव में योगदान करते हैं।
प्रोजेक्ट लोम्बोक को चुनने के कुछ कारण यहां दिए गए हैं।
यह "बॉयलरप्लेट कोड" को कम करता है।
यह कोड की पुन: प्रयोज्यता और पठनीयता में भी सुधार करता है।
इसे लागू करना बहुत आसान है और इसमें कोई जटिलता नहीं है।
"आईडीई" के साथ आसानी से एकीकृत हो जाता है।

मेवेन प्रोजेक्ट पर जावा में लोम्बोक को कैसे कार्यान्वित करें

हमारी अधिकांश परियोजनाएं मावेन पर आधारित हैं। इसलिए, हमें बस अपने प्रोजेक्ट में मौजूद "Pom.xml" फ़ाइल में "प्रोजेक्ट लोम्बोक" निर्भरताएँ जोड़नी होंगी।

मावेन रिपॉजिटरी पर जाएं और वहां से लोम्बोक मावेन रिपॉजिटरी की प्रतिलिपि बनाएं, अपने "पोम.एक्सएमएल" में नवीनतम लोम्बोक निर्भरता जोड़ें और इसे सहेजें, फिर प्रोजेक्ट को रीफ्रेश करें।

जावा में प्रोजेक्ट लोम्बोक की गेटर्स, सेटर्स सुविधा

जावा में, अब तक का सबसे आम अभ्यास "जावा बीन्स" पैटर्न का उपयोग करके गेटर्स और सेटर्स को जोड़ना है। अधिकांश आईडीई स्वचालित रूप से इन पैटर्न के लिए कोड उत्पन्न करते हैं।

आइए देखें कि कोड "डेटा ऑब्जेक्ट" और "डेटा फ़ैक्टरी" की सहायता से गेटर और सेटर बनाकर इस दृष्टिकोण को समझता है:

लोम्बोक के बिना डेटा ऑब्जेक्ट

जबकि गेटर और सेटर तरीकों को बनाने के लिए पारंपरिक JavaBeans दृष्टिकोण मैन्युअल रूप से काम पूरा करता है, लेकिन इसमें कई कमियां और सीमाएं हैं जो इसे कम वांछनीय बनाती हैं, विशेष रूप से आधुनिक जावा विकास वातावरण में, इसकी कमियां प्रमुख रूप से लोम्बोक में कवर की गई हैं।

इसलिए, इसके बजाय, हम लोम्बोक पैटर्न का उपयोग करना पसंद करते हैं। यहां बताया गया है कि इसे जावा में कैसे लागू किया जा सकता है:

जावा में प्रोजेक्ट लोम्बोक की कंस्ट्रक्टर विशेषताएं

लोम्बोक के बिना कंस्ट्रक्टर्स हमें प्रत्येक कंस्ट्रक्टर को मैन्युअल रूप से परिभाषित करना होगा, जो थकाऊ और त्रुटि-प्रवण हो सकता है, खासकर कई क्षेत्रों वाली कक्षाओं के लिए। इसके अतिरिक्त, हमें विभिन्न कंस्ट्रक्टर कॉन्फ़िगरेशन को संभालने की आवश्यकता है, जो कोड की जटिलता को बढ़ा सकता है।

लोम्बोक @NoArgsConstructor, @AllArgsConstructor और @RequiredArgsConstructor एनोटेशन के साथ इस प्रक्रिया को सरल बनाता है।

लोम्बोक के बिना कंस्ट्रक्टर्स

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

विभिन्न लोम्बोक विशेषताएं और गुण

  1. टूस्ट्रिंग जनरेशन
  • जावा में, toString() java.lang.Object क्लास में परिभाषित एक विधि है, जो किसी ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व को वापस करने के उद्देश्य से कार्य करती है। ToString() विधि जावा में सभी वर्गों द्वारा विरासत में मिली है, और ऑब्जेक्ट क्लास में इसका डिफ़ॉल्ट कार्यान्वयन क्लास नाम वाली एक स्ट्रिंग देता है जिसके बाद "at" प्रतीक (@) और ऑब्जेक्ट के हैश कोड का हेक्साडेसिमल प्रतिनिधित्व होता है।
  • हालाँकि, ऑब्जेक्ट द्वारा प्रदान किया गया toString() का डिफ़ॉल्ट कार्यान्वयन हमेशा विशिष्ट वर्गों के लिए सार्थक या उपयोगी नहीं हो सकता है। इसलिए, डेवलपर्स के लिए कस्टम स्ट्रिंग प्रतिनिधित्व प्रदान करने के लिए अपनी कक्षाओं में toString() विधि को ओवरराइड करना आम बात है जो ऑब्जेक्ट की स्थिति या गुणों का बेहतर वर्णन करता है।
  • हमारे उदाहरण के अनुसार, एक प्रोफ़ाइल वर्ग प्रथम नाम, अंतिम नाम, पदनाम, आयु जानकारी वाली स्ट्रिंग को वापस करने के लिए toString() को ओवरराइड कर सकता है। ToString() को ओवरराइड करने से ऑब्जेक्ट जानकारी को मानव-पठनीय प्रारूप में आसानी से प्रिंट या लॉग करने की अनुमति मिलती है, जो डिबगिंग, लॉगिंग या उपयोगकर्ताओं को जानकारी प्रदर्शित करने में सहायक हो सकती है।
  • ToString Lombok एनोटेशन का उपयोग किए बिना हमें प्रोफ़ाइल क्लास के भीतर toString() विधि को मैन्युअल रूप से कार्यान्वित करना होगा। हम वांछित स्ट्रिंग प्रतिनिधित्व बनाने के लिए प्रथम नाम, अंतिम नाम, पदनाम और आयु फ़ील्ड को जोड़ते हैं। यह मैन्युअल कार्यान्वयन लोम्बोक के @ToString एनोटेशन के समान परिणाम प्राप्त करता है।

ToString एनोटेशन सुविधा का उपयोग किए बिना

  • @ToString एनोटेशन क्लास के लिए एक toString() विधि उत्पन्न करता है, जो इसके फ़ील्ड का एक स्ट्रिंग प्रतिनिधित्व प्रदान करता है। चूँकि हम अपने डेटा मॉडल को समृद्ध करते हैं इसलिए इसे स्वयं लिखने और इसे बनाए रखने की कोई आवश्यकता नहीं है।
  • इस एनोटेशन के साथ, प्रोफ़ाइल के उदाहरण पर toString() को कॉल करने से उसके फ़ील्ड के मान वाली एक स्ट्रिंग वापस आ जाएगी।
  • @Exclude एनोटेशन हर अलग-अलग एनोटेशन जैसे गेटर्स, सेटर्स, टॉस्ट्रिंग, इक्वलएंडहैशकोड आदि के लिए उपयोगी हो सकते हैं। आइए इसे @ToString एनोटेशन उदाहरण के साथ समझें।
  • पदनाम फ़ील्ड को @ToString(बहिष्कृत = {“पदनाम”}) के साथ एनोटेट करके
  • लोम्बोक इसे @ToString द्वारा उत्पन्न toString() विधि में शामिल होने से बाहर रखता है। यदि आप किसी ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व में कुछ फ़ील्ड प्रदर्शित करने से बचना चाहते हैं तो यह उपयोगी हो सकता है।

2. EqualAndHashCode जनरेशन

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

EqualAndHashCode एनोटेशन सुविधा का उपयोग किए बिना

  • @EqualsAndHashCode एनोटेशन क्लास के फ़ील्ड के आधार पर बराबर() और हैशकोड() विधियां उत्पन्न करता है।
  • इस एनोटेशन के साथ, लोम्बोक कक्षा के सभी क्षेत्रों का उपयोग करके बराबर() और हैशकोड() विधियां उत्पन्न करता है।
  • इससे इन विधियों के मैन्युअल कार्यान्वयन की आवश्यकता समाप्त हो जाती है, बॉयलरप्लेट कोड कम हो जाता है और कोड रखरखाव में सुधार होता है।

3. डेटा एनोटेशन
@डेटा एनोटेशन का उपयोग किए बिना, हमें मैन्युअल रूप से अपने कोड में गेटर्स, सेटर्स और कंस्ट्रक्टर्स सुविधाओं को लागू करना होगा।

  • डेटा एनोटेशन सुविधा का उपयोग किए बिना

  • @डेटा एनोटेशन एक सुविधाजनक शॉर्टकट है जो @Getter, @setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode और कई अन्य एनोटेशन को बंडल करता है।

  • @data का उपयोग करके, लोम्बोक स्वचालित रूप से कक्षा में घोषित फ़ील्ड के आधार पर हमारे लिए इन विधियों को उत्पन्न करता है। यह बॉयलरप्लेट कोड की मात्रा को काफी कम कर देता है जिसे हमें लिखने और बनाए रखने की आवश्यकता होती है, जिससे हमारा कोड अधिक संक्षिप्त और पठनीय हो जाता है।

  1. बिल्डर पैटर्न
  • हमारे प्रोफ़ाइल उदाहरण पर लौटते हुए, एक नए उदाहरण का निर्माण करने के लिए संभावित रूप से चार तर्कों की असंख्य गिनती के साथ एक कंस्ट्रक्टर को नियोजित करने की आवश्यकता होती है, एक कार्य जो बोझिल हो जाता है क्योंकि हम कक्षा में अतिरिक्त विशेषताओं को पेश करते हैं।
  • शुक्र है, लोम्बोक अपने @बिल्डर फीचर के साथ एक मजबूत समाधान प्रदान करता है, जो नए उदाहरण बनाने के लिए बिल्डर पैटर्न के उपयोग की सुविधा प्रदान करता है। आइए इस सुविधा को हमारे प्रोफ़ाइल वर्ग में एकीकृत करें।

पैकेज org.example.dataobjects;

लोम्बोक आयात करें।*;

@गेट्टर
@सेट्टर
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(बहिष्कृत = {"पदनाम"})
@EqualsAndHashCode
@बिल्डर
@डेटा
सार्वजनिक वर्ग प्रोफ़ाइल {
निजी स्ट्रिंग प्रथमनाम;
निजी स्ट्रिंग अंतिम नाम;
निजी स्ट्रिंग पदनाम;
निजी पूर्णांक आयु;

सार्वजनिक स्थैतिक शून्य main (String [] args) {

// बिल्डर का उपयोग करके प्रोफ़ाइल का एक उदाहरण बनाना
प्रोफ़ाइल प्रोफ़ाइल = प्रोफ़ाइल.बिल्डर()
.पहला नाम("पार्थ")
.अंतिमनाम("कथरोटिया")
.पदनाम("क्यूए ऑटोमेशन इंजीनियर")
.उम्र(23)
।निर्माण();
}
}

डेलम्बोक

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

निष्कर्ष

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

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/jignect_technologies/lombok-unleashed-elevating-java-efficiency-with-getters-setters-constructors-builders-and-more-mfm?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3