मैं एक सामान्य प्रकार बनाने की कोशिश कर रहा हूं जो बाद के उपयोग के लिए बनाए गए संस्करणों का मानचित्र रखता है। प्रभावी रूप से, यह एक सिंगलटन पैटर्न है जहां प्रति प्रकार एक उदाहरण है। मेरे पास अब तक का कोड है:संबंधित प्रकारों के जेनेरिक कुंजी/मानों का सामान्य मानचित्र
public class FieldBinder<T> {
static final Map<Class<? extends Object>,FieldBinder<? extends Object>> instanceMap =
new HashMap<Class<? extends Object>,FieldBinder<? extends Object>>();
private FieldBinder() {}
synchronized public static <V extends Object> FieldBinder<V> getInstance(Class<V> klass) {
if(!instanceMap.containsKey(klass)) {
instanceMap.put(klass, new FieldBinder<V>());
}
return (FieldBinder<V>)instanceMap.get(klass);
}
}
हालांकि, मुझे अभी भी अनिश्चितता है कि मैं "इसे सही कर रहा हूं"। ऐसा लगता है कि मुझे यह निर्दिष्ट करने में सक्षम होना चाहिए कि संग्रह (कक्षा -> फ़ील्डबिंडर) है। तथ्य यह है कि आईडीई रिटर्न स्टेटमेंट के बारे में चेतावनी दे रहा है केवल इस विचार को मजबूत करता है।
क्या इसे संभालने का कोई बेहतर तरीका है?
नोट: This question बहुत करीबी से संबंधित लगता है, लेकिन बहुत दूर है कि मैं यह नहीं समझ सकता कि इसमें अपनी समस्या के बारे में जानकारी कैसे लागू करें।
मान लीजिए कि मैं समझ रहा हूं कि आप क्या कह रहे हैं, तो यह बिल्कुल नहीं है कि मैं क्या कर रहा हूं। मैं चाहता हूं कि कंपाइलर को यह बताना है कि "यह क्लास > 'से' फ़ील्डबिंडर > 'से एक नक्शा है, जहां दोनों? एक जैसा होना चाहिए। ऐसे में, जब मैं कुछ = = xyz की कुंजी का उपयोग करके बाहर खींचता हूं, तो मैं सुरक्षित रूप से सुरक्षित कर सकता हूं मानकों को मूल्य = = xyz, क्योंकि संकलक मुझे केवल इस तरह से चीजों को रखने के लिए सीमित कर सकता है। यह सब संकलित समय की जानकारी है, ऐसा लगता है कि संकलक इसे संभाल नहीं सकता है। – RHSeeger