मैं एक एप्लिकेशन (क्वार्ट्ज शेड्यूलर) विकसित करने की प्रक्रिया में हूं जहां हमारे पास नौकरी कक्षा है जो वास्तव में काम को निष्पादित करने के लिए ज़िम्मेदार है और हमें नौकरी कक्षा के नाम को बताने/पास करने की आवश्यकता है क्वार्ट्ज शेड्यूलर में एक ट्रिगर बनाने के दौरान।एक विशिष्ट इंटरफ़ेस को लागू करने वाले सभी वर्गों को ढूंढना
मैं उन सभी को एक विस्तार बिंदु प्रदान करना चाहता हूं जो एपीआई का उपयोग करना चाहते हैं (कुछ सामान्य नौकरियों के बगल में जो मैं एपीआई के हिस्से के रूप में प्रदान करूंगा)। विचार एक (मार्कर) इंटरफ़ेस बनाना है और यदि कोई भी अपनी कक्षा को शेड्यूलर जॉब क्लास के रूप में घोषित करना चाहता है, तो उन्हें इंटरफ़ेस को लागू करने के लिए (घोषणा) करना है।
मुझे यकीन नहीं है कि मैं कौन सी कक्षाएं अनुबंध का पालन कर रहा हूं (इंटरफ़ेस को कार्यान्वित करके) ताकि मैं उन्हें उस उपयोगकर्ता को दिखा सकूं जो शेड्यूलर में ट्रिगर शेड्यूल करना चाहता है।
मेरी आवश्यकता कक्षाओं को रन टाइम पर लोड नहीं करना है, लेकिन आवश्यक इंटरफ़ेस को लागू करने वाले वर्गों की उपयोगकर्ता सूची दिखाने के लिए ताकि उपयोगकर्ता कक्षा का चयन कर सकें और कक्षा का नाम शेड्यूलर को पास किया जा सके। यह क्वार्ट्ज शेड्यूलर है जो अंत में कक्षा का उदाहरण बनाने के लिए जिम्मेदार होगा।
क्या कोई सुझाव दे सकता है कि मैं उपर्युक्त लक्ष्य कैसे प्राप्त कर सकता हूं या क्या मैं ऐसा करने का प्रयास करने का कोई और बेहतर तरीका है?
संपादित
मैं ServiceLoader के दस्तावेज़ के माध्यम से चला गया और ऐसा लगता है एक कार्यान्वयन वर्ग का नाम है, जो मुझे करने के लिए सुराग के साथ META-INF फ़ोल्डर में एक फ़ाइल बनाने के लिए है कि एक सेवा लागू करने के लिए ऐसा लगता है कि यदि मेरे एपीआई का उपयोगकर्ता 20 अलग-अलग कार्यान्वयन चाहता है, तो उसे फ़ाइल में 20 प्रविष्टियां डालना पड़ता है, जो मेरे लिए अंतिम उपयोगकर्ता के लिए बहुत अधिक काम करता है क्योंकि प्रत्येक नौकरी कक्षा एक विशिष्ट नौकरी निष्पादित करने के लिए बनाई जाएगी और वहां नौकरी कक्षाओं के 100 के हो।
अगर मेरी धारणा गलत है तो कृपया मुझे सही करें।
एक और प्रयास एनोटेशन बनाने और फिर एनोटेटेड कक्षाओं की खोज करना है। यहां http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime कहता है कि इसे कैसे प्राप्त किया जाए। – polypiel
क्या यह मदद करेगा? [लिंक] (http://www.javaworld.com/javaworld/javaqa/2003-07/02-qa-0725-classsrc2.html?page=1) – titogeo