लोड हो रहा है जैसा कि यहाँ दिखायावर्ग
public class TrueFalseQuestion implements Question{
static{
QuestionFactory.registerType("TrueFalse", "Question");
}
public TrueFalseQuestion(){}
}
मैं कुछ वर्गों है बिना एक जावा में चलाने के लिए स्थिर प्रारंभ ब्लॉक मिलता है ...
public class QuestionFactory {
static final HashMap<String, String > map = new HashMap<String,String>();
public static void registerType(String questionName, String ques) {
map.put(questionName, ques);
}
}
public class FactoryTester {
public static void main(String[] args) {
System.out.println(QuestionFactory.map.size());
// This prints 0. I want it to print 1
}
}
मैं कैसे इतना है कि TrueFalseQuestion
वर्ग बदल सकते हैं स्थैतिक विधि हमेशा चलती है ताकि जब मैं अपना मुख्य तरीका चलाता हूं तो मुझे 0 के बजाय 1 मिलता है? मैं मुख्य विधि में कोई बदलाव नहीं चाहता हूं।
मैं वास्तव में कारखाने के पैटर्न को लागू करने की कोशिश कर रहा हूं जहां सबक्लास कारखाने के साथ पंजीकृत है लेकिन मैंने इस प्रश्न के लिए कोड को सरल बना दिया है।
संदर्भ के लिए, यह डिज़ाइन प्रश्न वर्गों के बारे में जानने वाले कारखाने की आवश्यकता से बचने के लिए आया था (यहां: http : //stackoverflow.com/questions/2582357/augment-the-factory-pattern-in-java)। –
मैंने उस सवाल को नहीं देखा था। प्रश्न इंटरफ़ेस के कार्यान्वयन के बारे में कुछ जानने की आवश्यकता है, चाहे वह सीधे कारखाना है, या किसी प्रकार की कॉन्फ़िगरेशन फ़ाइल के माध्यम से। एकमात्र अन्य तरीका है, जैसा कि मैंने कहा था, कक्षा के सभी वर्गों के माध्यम से जा रहा है और देख रहा है कि क्या वे प्रश्न लागू करते हैं। ऊपर दिए गए मेरे उत्तर में एक अपूर्ण रूप से निर्मित कारखाने के बारे में चेतावनी भी ध्यान दें। यह अब काम कर सकता है, लेकिन भविष्य में वस्तु की स्थिति (या यहां तक कि वर्तमान में, प्लेटफार्मों में) के बारे में कोई गारंटी नहीं है। –