मैं जावा 1.6.0_25 का उपयोग कर रहा हूं।क्लास.get एन्नोटेशन() को मुझे कास्ट करने की आवश्यकता क्यों है?
मैं एक एनोटेशन परिभाषित किया गया है:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {
String value();
}
और बाद में जब मैं getAnnotation का उपयोग करें:
Resource resource = (Resource)cls.getAnnotation(Resource.class);
संकलक और आईडीई का मानना है कि मैं परिणाम कास्ट करना होगा, लेकिन getAnnotation जावा में घोषित किया जाता है
public <A extends Annotation> A getAnnotation(Class<A> annotationClass);
के बाद से Resource.class प्रकार कक्षा की है, यह लगता है: के रूप में 1.5 प्रलेखन मुझे इसका मतलब है कि cls.getAnnotation (Resource.class) प्रकार संसाधन वापस करना चाहिए, और मुझे कास्ट करने की आवश्यकता है।
प्राप्त करने के लिए मुझे मिले सभी उदाहरणों में एनाटेशन नहीं है, इसलिए मुझे कुछ गलत करना होगा।
यह काम करता है लेकिन जिज्ञासा से बाहर: पहली पंक्ति संकलित क्यों नहीं होती है? GetAnnotation विधि क्लास के टी का उपयोग नहीं करती है, इसलिए इससे कोई फर्क नहीं पड़ता है? (यह स्पष्ट रूप से करता है !!) –
assylias
मुझे लगता है कि जब आप कच्चे वर्ग 'कक्षा' का उपयोग करते हैं, तो संकलक प्री-जेनेरिक जावा के साथ पिछड़े संगतता के लिए कक्षा में सभी जेनेरिकों को भूल जाता है। – Jesper
निश्चित रूप से काम किया। अजीब लगता है, लेकिन मुझे लगता है कि @ जेस्पर सही है कि यह पीछे की तरफ संगतता के लिए है। –