2017-09-17 24 views
5

जावा 9 में कक्षा द्वारा मॉड्यूल नाम कैसे प्राप्त करें? उदाहरण के लिए, आइए निम्नलिखित स्थिति पर विचार करें। दो नामित मॉड्यूल हैं - मॉड्यूल और मॉड्यूल बी। मॉड्यूलए मॉड्यूलबी के बारे में कुछ भी नहीं जानता है। मॉड्यूलबी को मॉड्यूलए की आवश्यकता है।जावा 9 में कक्षा द्वारा मॉड्यूल नाम कैसे प्राप्त करें?

public class ClassB { 

    public void doIt() { 
     ClassA objectA = new ClassA(); 
     objectA.printModuleName(ClassB.class); 
    } 
} 

यह कैसे करना है:

public class ClassA { 

    public void printModuleName(Class klass) { 
     //how to get here name of the module that contains klass? 
    } 
} 

ModuleB वर्ग शामिल हैं:

ModuleA वर्ग में शामिल है?

उत्तर

7

प्राप्त करने के लिए एक Module एक Class Java9 में करके, आप getModule()

Module module = com.foo.bar.YourClass.class.getModule(); 

और आगे getNameModule वर्ग पर उपयोग कर सकते हैं मॉड्यूल के नाम लाने के लिए

String moduleName = module.getName(); 

ध्यान देने योग्य एक बिंदु (आपके मामले में जब आप नामित मॉड्यूल का उपयोग कर रहे हैं) यह है कि getModule मॉड्यूल देता है कि यह कक्षा या इंटरफ़ेस का सदस्य है।

  • इस वर्ग के एक सरणी टाइप का प्रतिनिधित्व करता है, तो इस विधि तत्व प्रकार के लिए मॉड्यूल देता है।
  • यदि यह वर्ग एक आदिम प्रकार या शून्य का प्रतिनिधित्व करता है, तो java.base मॉड्यूल के लिए मॉड्यूल ऑब्जेक्ट लौटा दिया जाता है।
  • यदि यह वर्ग एक अनाम मॉड्यूल में है तो इस वर्ग के लिए क्लास लोडर का अनाम नाम वापस कर दिया गया है।
+1

मैं ओएसजीआई से आया था और मुझे लगता है कि ओएसजीआई - वर्ग द्वारा बंडल प्राप्त करने के लिए ढांचे का उपयोग करें। –

संबंधित मुद्दे