Generators का उपयोग कर कक्षाएं बनाते समय, एक प्रकार के सभी उप-वर्गों को खोजना संभव है। आप GWT शोकेस स्रोत में उदाहरण के लिए इस तकनीक प्राप्त कर सकते हैं (full code देखें):क्या GWT जेनरेटर कॉन्टेक्स्ट का उपयोग करके @MyAnnotation के साथ एनोटेटेड सभी कक्षाएं खोजना संभव है?
JClassType cwType = null;
try {
cwType = context.getTypeOracle().getType(ContentWidget.class.getName());
} catch (NotFoundException e) {
logger.log(TreeLogger.ERROR, "Cannot find ContentWidget class", e);
throw new UnableToCompleteException();
}
JClassType[] types = cwType.getSubtypes();
मैं ऐसी ही कुछ करना चाहते हैं, लेकिन इसके बजाय का एक वर्ग का विस्तार (या लागू करने एक अंतरफलक)
public class SomeWidget extends ContentWidget { ... }
, क्या मैं इसे द्वारा टिप्पणियों को एनोटेट कर सकता हूं?
@MyAnnotation(...)
public class SomeWidget extends Widget { ... }
और फिर सब विजेट कि @MyAnnotation से एनोटेट खोजने? मुझे JAnnotationType.getAnnotatedTypes()
जैसी कोई विधि नहीं मिली, लेकिन शायद मैं सिर्फ अंधा हूं?
नोट: मैं इसे Google Reflections पुस्तकालय के साथ काम करते हैं, reflections.getTypesAnnotatedWith(SomeAnnotation.class)
का उपयोग कर बनाने के लिए सक्षम था, लेकिन मैं बजाय GeneratorContext का उपयोग कर, विशेष रूप से, क्योंकि यह एक बहुत बेहतर काम करता है जब DevMode में एप्लिकेशन को फिर से लोड करना चाहते।
+1, जो निश्चित रूप से काम करता है, और मैंने इस दृष्टिकोण पर विचार नहीं किया। यह एक तरह का क्रूर बल है (जो बहुत अधिक मायने रखता नहीं है क्योंकि किसी के पास लाखों प्रकार नहीं होंगे)। यदि आपके लिए कोई पूर्व परिभाषित समाधान नहीं है, तो मैं खुशी से आपका जवाब स्वीकार करूंगा। –
यह अधिकांश जावा के परिप्रेक्ष्य से क्रूर बल महसूस करता है, लेकिन केवल स्रोत पथ के भीतर यह इतना बुरा नहीं होगा। इसके अलावा, Google Reflections लाइब्रेरी में फ़ंक्शन को भी करना होगा - वर्तमान में क्लासपाथ पर सभी कक्षाओं को ढूंढें और देखें। –