/ / रनटाइम रिफ्लेक्शन - जावा, स्केला, परावर्तन के साथ मानक वर्ग में नहीं (जावा या स्काला) में आधार वर्ग निर्धारित करें

मानक कक्षाओं (जावा या स्कैला) में रनटाइम प्रतिबिंब - जावा, स्कैला, प्रतिबिंब के साथ बेस क्लास निर्धारित न करें

मैं Scala से GraphQL परिभाषा उत्पन्न कर रहा हूँप्रकार लेकिन "रनटाइम रिफ्लेक्शन एपीआई में कुछ भी नहीं पा सकते हैं, केवल आधार वर्ग प्राप्त करने के लिए जो कि" उपयोगकर्ता परिभाषित "हैं, अर्थात् स्काला या जावा मानक पुस्तकालय का हिस्सा नहीं है।

के रूप में अभी मैं सिर्फ लोगों का एक सेट है जो मुझे पता है कि उदा Any, Object और लगभग 8 अन्य। वे केवल सूची में हैं क्योंकि वे "जब मैंने यूनिट परीक्षण लिख रहे थे तब दिखाया था। आदर्श रूप से मैं" नहीं चाहता हूं कि एक मैनुअल सूची चाहिए, लगता है जैसे नए प्रकार जोड़ दिए जाते हैं, यह शायद टूट जाएगा।

मुझे पता नहीं है कि क्या यह मैक्रोज़ के साथ संभव है लेकिनयह एक विकल्प नहीं है। मैक्रोज़ के साथ प्रयोग करने के बाद इसके आसपास बहुत सारे कीड़े थे, जिसमें कंपाइलर के दुर्घटनाग्रस्त होने और उस बग के ठीक होने का अनुमान है zinc लेकिन मैं इसका उपयोग नहीं कर सकता क्योंकि मैं ग्रेड का उपयोग कर रहा हूं जो केवल उपयोग कर सकता है 0.x.x नाम स्थान में परिवर्तन के कारण जस्ता श्रृंखला 1.x श्रृंखला।

इतना सब कुछ कहा जा रहा है, क्या किसी को पता है कि क्या मानक पुस्तकालयों से नहीं हैं एक प्रकार के आधारभूत निर्धारण का एक साधन है?

उत्तर:

उत्तर № 1 के लिए 1

मुझे नहीं लगता कि ऐसी सुविधा मौजूद है और यहां तक ​​किमौजूद होना चाहिए। विशेष रूप से मुझे नहीं लगता कि "मानक पुस्तकालय" शब्द वास्तव में आपकी समस्या के संदर्भ में पर्याप्त रूप से परिभाषित है। मेरा मतलब है कि क्यों इसे मानक पुस्तकालय से कक्षाओं को बाहर करना चाहिए, लेकिन कुछ अन्य लोकप्रिय पुस्तकालयों से नहीं जिन पर आप निर्भर हैं? और वहां मानक पुस्तकालय में कुछ काफी जटिल प्रकार हैं (उदाहरण के लिए) java.text.DateFormat या org.w3c.dom.Document)। हाँ, आप शायद उन्हें अभी उजागर नहीं करते हैं, लेकिन यह केवल अभी के लिए है।

मुझे लगता है कि उचित तरीका है एकसभी आधार वर्गों और / या पैकेजों की स्पष्ट सफेद सूची जिसे आप अपने एपीआई अनुबंध के एक भाग के रूप में उजागर करना चाहते हैं और इसे फ़िल्टर करने के लिए उपयोग करते हैं। आप एक काली सूची (जैसे) का उपयोग करने का भी प्रयास कर सकते हैं java.*, javax.*, scala.*) "मानक पुस्तकालय" को फ़िल्टर करने के लिए और यह कुछ समय के लिए काम कर सकता है लेकिन मैं अभी भी डॉन "टी" यह एक अच्छा विचार है।