2012-09-28 5 views
16

मैं अपने आवेदन में एनोटेशन का उपयोग करना चाहता हूं। इस कारण से मैं एनोटेशन के लिए "हैलो दुनिया" बनाएं:getAnnotations() खाली है

उदाहरण इस प्रकार है:

public class HelloAnnotation 
{ 
    @Foo(bar = "Hello World !") 
    public String str; 

    public static void main(final String[] args) throws Exception 
    { 
     System.out.println(HelloAnnotation.class.getField("str").getAnnotations().length); 
    } 
} 

और यह व्याख्या है:

import java.lang.annotation.ElementType; 
import java.lang.annotation.Target; 

@Target(ElementType.FIELD) 
public @interface Foo 
{ 
    public String doTestTarget(); 
} 

मेरे समस्या अब है कि मुख्य में getAnnotations() है खाली। मेरे कोड में क्या गलत है?

@Retention(RetentionPolicy.RUNTIME) 

जावाडोक से @Retention के लिए: RetentionPolicy.CLASS

को जावाडोक से RetentionPolicy के लिए

अवधारण नीति चूक:

+3

ठीक है, एक समस्या यह है कि आप एक एनोटेशन नामित '@ Foo' का उपयोग है, लेकिन आप एक एनोटेशन' @ Test_Target' बुलाया परिभाषित करते हैं। यह आमतौर पर सबसे अच्छा होता है यदि आप संकलित कोड पोस्ट करते हैं (हालांकि * डेविड ग्रांट * ने आपको वैसे भी जवाब दिया)। – parsifal

+0

हाँ यकीन है, thx, मैं इसे पहले से संपादित कर रहा हूँ। वह कॉपी और पेस्ट गलती थी :) –

उत्तर

33

आपकी टिप्पणियों में निम्नलिखित जोड़े

  • CLASS
    • एनोटेशन संकलक द्वारा वर्ग फ़ाइल में दर्ज किया जाना लेकिन रन टाइम पर वीएम द्वारा बनाए रखा करने की आवश्यकता नहीं कर रहे हैं।
  • RUNTIME
    • एनोटेशन संकलक द्वारा वर्ग फ़ाइल में रिकॉर्ड करने और उसे चलाने के समय में वी एम द्वारा बनाए रखा है, तो वे संजीदगी से पढ़ा जा सकता है कर रहे हैं।
  • SOURCE
    • एनोटेशन संकलक द्वारा खारिज किया जा करने के लिए कर रहे हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^