मैं गुवा TypeToken
कक्षा का उपयोग कर परीक्षण कर रहा हूं ताकि परीक्षण किया जा सके कि किसी प्रकार के मनमानी प्रकार के उदाहरण अन्य प्रकार की वस्तुओं को असाइन किए जा सकते हैं।Guava के TypeToken.isAssignable विधि को समझना
निम्नलिखित कोड का टुकड़ा में, मैं परीक्षण कर रहा हूँ अगर प्रकार List
के रूप में घोषित List<String>
से आबंटित कर रहे हैं, और viceversa:
TypeToken rawListType = new TypeToken<List>(){};
TypeToken parameterizedListType = new TypeToken<List<String>>(){};
System.out.println(rawListType.isAssignableFrom(parameterizedListType)); //true
System.out.println(parameterizedListType.isAssignableFrom(rawListType)); //false
क्यों isAssignableFrom
रिटर्न के लिए दूसरी कॉल false
, यह देखते हुए कि कोड के नीचे संकलित करता है , तो मैं List
से List<String>
(एक चेतावनी के साथ) या लेन-:
List l = null;
List<String> l2 = null;
l = l2;
l2 = l; //Type Safety Warning
मेरे अंतर्ज्ञान है कि अमरूद इन की अगर उत्तर दे रहा है इन प्रकारों की संभावना चेतावनियों के बिना असाइन किए जा सकते हैं (?)। यदि यह सही है, तो मैं संकलक की भावना में असाइन करने योग्यता की जांच कैसे कर सकता हूं, जिससे मुझे किसी अन्य ऑब्जेक्ट को (चेतावनी के साथ या बिना किसी ऑब्जेक्ट को असाइन करने की इजाजत मिलती है), जैसा कि यह दूसरे कोड स्निपेट में दिखाया गया है?
हाय @ पॉल। यह वही नहीं है जो मैं खोज रहा हूं, अगर मैं कच्चे प्रकार की असाइन करने योग्यता की जांच करता हूं, तो सूची सूची से असाइन करने योग्य होगी और इसी तरह, और यह सही नहीं है। मैं ऐसे मामलों में असाइनमेंट सत्यापित करने का एक तरीका ढूंढ रहा हूं जहां संकलक को अदालतों के पीछे निहित कास्ट जोड़ना होगा। –
Sergio
समझा - मेरा अपडेट देखें। –
आपका समाधान मेरे लिए सही लगता है, क्या आपको कोई विचार है कि TypeToken ऐसा क्यों नहीं करता है? कम से कम उन्हें दस्तावेज होना चाहिए था कि विधि javadoc में मुझे लगता है। – Sergio