मेरे पास विधियों के लिए एक सरल मार्कर एनोटेशन है ( प्रभावी जावा (द्वितीय संस्करण) में आइटम 35 में पहले उदाहरण के समान):किसी दिए गए पैकेज में एनोटेटेड विधियों को कैसे ढूंढें?
/**
* Marker annotation for methods that are called from installer's
* validation scripts etc.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface InstallerMethod {
}
फिर, किसी दिए गए पैकेज में (com.acme.installer
कहें), जिसमें एक है कुछ 20 वर्गों वाले कुछ उप-पैकेज, मैं उन सभी विधियों को ढूंढना चाहता हूं जो इसके साथ एनोटेटेड हैं। (क्योंकि मैं यूनिट टेस्ट में सभी एनोटेटेड विधियों के बारे में कुछ चेक करना चाहता हूं।) Xzx26
क्या (यदि कोई है) ऐसा करने का सबसे आसान तरीका है? पसंदीदा रूप से नई तृतीय पक्ष पुस्तकालयों या ढांचे को जोड़ने के बिना।
संपादित करें: स्पष्टीकरण के लिए, स्पष्ट रूप से method.isAnnotationPresent(InstallerMethod.class)
यह जांचने का तरीका होगा कि किसी विधि में एनोटेशन है या नहीं - लेकिन इस समस्या में सभी विधियों को ढूंढना शामिल है।
चेक http://stackoverflow.com/questions/520328/can-you-find-all-classes-in-a-package- उपयोग-प्रतिबिंब –
हम्म, हाँ, मुझे लगता है कि यह उस प्रश्न पर वापस आता है (जिसे मैंने फरवरी में पूछा था)। : पी लेकिन जबकि सही जवाब था "नहीं, यह प्रतिबिंब का उपयोग करके नहीं किया जा सकता", सवाल यह है कि * किसी भी माध्यम से एनोटेटेड विधियों को आसानी से कैसे ढूंढें * – Jonik
क्योंकि यहां मुश्किल हिस्सा वास्तव में नहीं है एनोटेशन से संबंधित (लेकिन पैकेज से कक्षाएं ढूंढना), यह सवाल उतना प्रासंगिक नहीं था जितना मैंने सोचा था। :/ओह ठीक है, शायद यह किसी को भी एक ही चीज़ के बारे में सोचने में मदद कर सकता है ... – Jonik