मैं सिर्फ कुछ एक अधिक अनुभवी प्रोग्रामर द्वारा लिखे कोड को पढ़ने के लिए, और मैं निम्नलिखित भर में आया था:क्यों निजी स्थैतिक अंतिम सूची/सेट/मानचित्र अप्रचलित बनाते हैं?
public class ConsoleFormatter extends Formatter {
private static final Map<Level, String> PREFIXES;
static {
Map<Level, String> prefixes = new HashMap<Level, String>();
prefixes.put(Level.CONFIG, "[config]");
prefixes.put(Level.FINE, "[debug]");
prefixes.put(Level.FINER, "[debug]");
prefixes.put(Level.FINEST, "[trace]");
prefixes.put(Level.INFO, "[info]");
prefixes.put(Level.SEVERE, "[error]");
prefixes.put(Level.WARNING, "[warning]");
PREFIXES = Collections.unmodifiableMap(prefixes);
}
// ...
}
आप देख सकते हैं, इस स्वरूपण लॉग आउटपुट के लिए उपयोग एक वर्ग है। मेरी आंखों को पकड़ा गया, हालांकि, स्थिर प्रारंभकर्ता ब्लॉक में कोड था: PREFIXES = Collections.unmodifiableMap(prefixes);
।
PREFIXES
क्यों एक अप्रचलित मानचित्र बनाया गया था? यह एक निजी स्थिर है, इसलिए उस वर्ग के बाहर डेटा को संशोधित करने का कोई जोखिम नहीं है। क्या निरंतर अपरिवर्तनीयता पूर्णता की भावना देने के लिए किया गया था?
व्यक्तिगत रूप से, मैं सीधे PREFIXES
सीधे में एक HashMap
और फिर put
कुंजी-मान जोड़ों के रूप में प्रारंभ किया है होता है, एक डमी, प्लेसहोल्डर नक्शा बनाने या क्षेत्र अपरिवर्तनीय नक्शा बनाने के बिना। क्या मुझसे कोई चूक हो रही है?
पूरे डेटा के PREFIXES को एकल चरण असाइनमेंट के कारण कक्षा को तुरंत चालू करते समय समवर्ती प्रारंभिक समस्याओं को रोकने के लिए _thought_ भी हो सकता है। –