मेरे पास एक अंतिम गैर स्थैतिक सदस्य है:जावा में, एक अंतिम क्षेत्र एक कन्स्ट्रक्टर सहायक से शुरू किया जा सकता है?
private final HashMap<String,String> myMap;
मैं इसे कन्स्ट्रक्टर द्वारा बुलाए गए विधि का उपयोग करके प्रारंभ करना चाहता हूं। चूंकि myMap फ़ाइनल है, इसलिए मेरी "सहायक" विधि इसे प्रारंभ करने में असमर्थ है। बेशक मेरे पास विकल्प हैं:
मैं सीधे कन्स्ट्रक्टर में myMap प्रारंभिक कोड लागू कर सकता हूं।
MyConstructor (String someThingNecessary)
{
myMap = new HashMap<String,String>();
myMap.put("blah","blahblah");
// etc...
// other initialization stuff unrelated to myMap
}
मैं अपने सहायक विधि को हैश मैप का निर्माण कर सकता हूं, इसे कन्स्ट्रक्टर पर वापस कर सकता हूं, और कन्स्ट्रक्टर को ऑब्जेक्ट को myMap पर असाइन कर सकता हूं।
MyConstructor (String someThingNecessary)
{
myMap = InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
private HashMap<String,String> InitializeMyMap(String someThingNecessary)
{
HashMap<String,String> initializedMap = new HashMap<String,String>();
initializedMap.put("blah","blahblah");
// etc...
return initializedMap;
}
विधि # 2 ठीक है, हालांकि, मैं सोच रहा हूं कि अगर कोई तरीका है तो मैं हेल्पर विधि को सीधे मैप मैप में हेरफेर करने की अनुमति दे सकता हूं। शायद एक संशोधक जो इंगित करता है कि इसे केवल निर्माता द्वारा ही बुलाया जा सकता है?
MyConstructor (String someThingNecessary)
{
InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
// helper doesn't work since it can't modify a final member
private void InitializeMyMap(String someThingNecessary)
{
myMap = new HashMap<String,String>();
myMap.put("blah","blahblah");
// etc...
}
क्या आप जानते हैं कि आपके प्रश्न का उत्तर देने वाले लोग क्या करेंगे? हां, वे ग्रहण खोलकर और अपने कोड को कॉपी-पेस्ट करके इसे आज़माएंगे! :) – Simon
@ सिमॉन मेरा प्रश्न मैंने जो कोशिश की है उसके विकल्प का अनुरोध कर रहा है। मैं सोच रहा हूं कि अगर उस भाषा के बेहतर ज्ञान वाले किसी व्यक्ति को मुझे किसी कीवर्ड या प्रतिमान के लिए मार्गदर्शन कर सकता है, तो मुझे अनजान है। – csj
उत्तर संख्या है स्रोत: जावा भाषा विनिर्देश 8.3.1.2 – mihi