में काम करने के लिए आपको जावा विधि एनोटेशन कैसे प्राप्त होते हैं मेरे पास दो परियोजनाएं, एक स्कैला प्रोजेक्ट और जावा प्रोजेक्ट है। मेरा स्कैला प्रोजेक्ट बिल्ड पथ में जावा प्रोजेक्ट का संदर्भ देता है।स्कैला
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
मेरी स्केला परियोजना में, मैं कुछ तरीकों व्याख्या कर रहा हूँ: मेरे जावा परियोजना में, मैं निम्नलिखित एनोटेशन की घोषणा कर रहा हूँ। अर्थात।
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
कहीं अन्य फ़ाइल में, मैं एनोटेशन बाहर निकलने के लिए कोशिश कर रहा हूँ।
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
दुर्भाग्य से, annotations
हमेशा एक खाली सरणी है। क्या मैं कुछ मौलिक रूप से गलत कर रहा हूं या क्या मुझे कुछ मामूली याद आ रही है? धन्यवाद!
संपादित मूल रूप से, मैं myAnnotation साथ MyMethod व्याख्या की गई थी दो बार है, जो सही नहीं है के रूप में किसी को बताया। यह पता चला कि यह समस्या नहीं थी। मुझे अभी भी annotations
के लिए खाली सरणी मिल रही है। कोई अपवाद नहीं फेंक दिया जा रहा है।
इसे इंगित करने के लिए धन्यवाद। दुर्भाग्य से यह समस्या नहीं थी। यहां तक कि एक एनोटेशन के साथ, मुझे अभी भी खाली सरणी मिल रही है। – Jordan
कोई अपवाद नहीं फेंक दिया जा रहा है आप इसे काम करने के लिए कैसे मिला? क्या आप एक उदाहरण पोस्ट कर सकते हैं? धन्यवाद! – Jordan
जैसा कि मैंने कहा, मैं बस आपके पोस्ट कोड का उपयोग करता हूं। आपका पोस्ट कोड अपवाद (पहला संस्करण) बढ़ाता है, और संकलन त्रुटियों (दूसरा संस्करण, आपको 'var myMethod = null' पंक्ति के प्रकार को परिभाषित करना चाहिए), मैं उन्हें हल करने के बाद, यह काम करता है। और मेरा स्कैला संस्करण 2.9.3 –