का उपयोग करके एक विधि संशोधित करें जावा में कोई विधि क्या कर रही है मैं कैसे बदल सकता हूं?एनोटेशन
मेरा मतलब है, मैं में
public class TestClass
{
private static StaticReference z;
public void test()
{
z.invokeToAll();
}
}
यह मुझे क्या करना है कोशिश कर रहा हूँ की एक बहुत ही सरल उदाहरण है निम्नलिखित कोड
@Anno1(Argument = "Option1")
public class TestClass
{
@Anno2
public void test()
{
}
}
बनाने के लिए एनोटेशन का उपयोग करने की कोशिश कर रहा हूँ। Anno1
में कई संभावित संयोजन होंगे, लेकिन यह अब तक मेरी समस्या नहीं है। मेरी समस्या यह है कि विधि test()
पर कोड जोड़ने का तरीका है, यदि संभव हो तो मैं अधिक सामान्य समाधान की तलाश में हूं। उदाहरण के लिए। एक तरह से विधि में कोड के हर तरह जोड़ने के लिए (न सिर्फ .invokeToAll()
के लिए एक रास्ता)
अब तक मैं import javax.annotation.processing.*;
उपयोग कर रहा हूँ और मैं निम्नलिखित कोड है, लेकिन मैं कैसे वहाँ
private void processMethodAnnotations(RoundEnvironment env)
{
for (Element e : env.getElementsAnnotatedWith(Anno2.class))
{
//If it is a valid annotation over a method
if (e.getKind() == ElementKind.METHOD)
{
//What to do here :S
}else
{
processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING,"Not a method!", e);
}
}
}
मुझे जावा प्रतिबिंब के बारे में कुछ मिला है लेकिन मुझे जो भी कर रहा है, उसके साथ मुझे मदद करने के लिए कोई स्रोत नहीं मिला है।
जाहिर है मेरे कोड मेंमैं extends AbstractProcessor
मैं इस ट्यूटोरियल पाया है (http://www.zdnetasia.com/writing-and-processing-custom-annotations-part-3-39362483.htm) लेकिन इस एक विधि को बदलने न सिर्फ एक नई कक्षा बनाने की चिंताओं। और javax.lang.model.elements
उस तत्व को संपादित करने का कोई भी तरीका प्रदान नहीं करता है (जो मेरे मामले में एक विधि का प्रतिनिधित्व करता है)।
मुझे आशा है कि मेरा प्रश्न नियमों के साथ स्पष्ट और इनलाइन है। यदि नहीं, तो कृपया टिप्पणी करें और मैं स्पष्टीकरण दूंगा। धन्यवाद।
बदलने के अधीन हैं, आप समाधान चाहते हैं कि मैं जो चाहता हूं, दुर्भाग्य से अजीब कारणों से मैं इसका उपयोग नहीं कर सकता। मुझे कहीं और समाधान मिला है ('जावासिस्ट')। वैसे भी मैंने आपको पहले ही +1 और अब प्रयास और अच्छे उत्तर के लिए एक स्वीकृत उत्तर दिया है। आपका बहुत बहुत धन्यवाद! – Muggen
@Muggen एचएम, आप मुझे "अजीब कारणों" के बारे में बता सकते हैं, इसलिए मैं देख सकता था कि वे वास्तव में मायने रखते हैं; शायद एओपी के साथ चिपकने का एक और तरीका है (यह समर्थन करना आसान लगता है ..) – Maxym
उन अजीब कारणों से 'अकादमिक प्रतिबंध' हैं;)। यद्यपि कि आपकी इस सहायता के लिए धन्यवाद। – Muggen