जावा लकड़हारा: स्टेटिक ब्लॉक आरंभीकरण या चर घोषणा में आरंभ


15

वर्तमान में मैं निम्नलिखित तरीके से अपने प्रोजेक्ट में लकड़हारा का उपयोग कर रहा हूं:

private static final Logger LOGGER;

static{
  LOGGER = logger.getLogger();
}

मुझे लॉगर वैरिएबल को इनिशियलाइज़ करने के लिए स्टैटिक ब्लॉक का उपयोग करने के लिए एक कोड रिव्यू मिला। मुझे घोषणा के बयान में ही लकड़हारे चर को पहचानने के लिए कहा गया था।

private static final Logger LOGGER = Logger.getLogger();

मैं यह पता लगाने की कोशिश कर रहा हूं कि अगर मैं इसे स्टैटिक ब्लॉक में इनिशियलाइज़ नहीं करता तो क्या फर्क पड़ेगा। मैं जानना चाहता हूं कि क्या यह एक अभ्यास है।


8
इससे कोई फर्क नहीं पड़ता, लेकिन उनमें से एक में अधिक टाइपिंग और कोड की अधिक लाइनें शामिल हैं।
user253751

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

आप लोम्बोक का उपयोग क्यों नहीं करते?
मोनिका को पुनः स्थापित करें - एम। श्रोडर

जवाबों:


48

कुछ वास्तव में विचित्र कोने के मामलों में सिवाय शुरुआती के अनुक्रमों को छोड़कर, दो विकल्प बिल्कुल समान काम करेंगे।

हालाँकि, उदघोषणा में सही उदाहरण को छोटा और अधिक परिचित माना जाता है, और केवल उसी कारण से इसे प्राथमिकता दी जानी चाहिए।

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


7
स्थैतिक ब्लॉकों का उपयोग करने के लिए एक दुर्लभ मामले के रूप में अपवादों का उल्लेख करते हुए अच्छा बिंदु।
user949300

4
एक HashMap Intializing एक और अच्छा usecase है।
रबरडक

3
@RubberDuck हालांकि जावा 9 के Map.ofतरीकों को इसके साथ मदद करनी चाहिए।
कोबरे

1
@ कॉज़र Map.ofहालांकि एक अपरिवर्तनीय नक्शा लौटाता है, इसलिए यदि आपको वास्तव में ज़रूरत है HashMapतो भी आपको इसे पुराने तरीके से करने की आवश्यकता है। या ऐसा कुछnew HashMap(Map.of(...))
kapex

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