उदाहरण के बाद foo
विधि हमें चेतावनी देती है, जबकि bar
नहीं?जावा जेनेरिक विरासत चेतावनी
public class X {
static class Y {}
static class Z extends Y {}
Y y = new Y();
<T extends Y> T foo() {
return (T) y; // warning - Unchecked cast from X.Y to T
}
Z bar() {
return (Z) y; // compiles fine
}
}
टाइप एरर के बारे में आप कितना जानते हैं? Http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html# टाइप टाइप –
मुझे लगता है कि यह स्पष्ट है कि 'foo()' को चेतावनी देना चाहिए। आप 'y' के अज्ञात सुपरक्लास' टी' पर ऑब्जेक्ट 'y' कास्टिंग कर रहे हैं। मुझे भी बहुत दिलचस्पी है कि क्यों बार() 'नहीं है। मुझे लगता है कि संकलक यह देखने में सक्षम है कि 'Z' से' Z' कास्टिंग समस्याएं उत्पन्न नहीं कर रहा है, क्योंकि 'Z' की परिभाषा उपलब्ध है। – SebastianH
@ सेबेस्टियनएच: मुझे नहीं लगता कि यह एक समस्या है। – gudge