簡體   English   中英

如何在Java 9中按類獲取模塊名稱?

[英]How to get module name by class in Java 9?

如何在Java 9中按類獲取模塊名稱? 例如,讓我們考慮以下情況。 有兩個命名模塊 - ModuleA和ModuleB。 ModuleA對ModuleB一無所知。 ModuleB需要ModuleA。

ModuleA包含類:

public class ClassA {

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

ModuleB包含類:

public class ClassB {

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

怎么做?

要在Java9中通過Class獲取Module ,可以使用getModule()

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

並在Module類上進一步getName以獲取Module的名稱

String moduleName = module.getName();

一個可觀察的注意事項(在您使用命名模塊時不是這種情況)是getModule返回此類或接口所屬的模塊。

  • 如果此類表示數組類型,則此方法返回元素類型的Module。
  • 如果此類表示基本類型或void,則返回java.base模塊的Module對象。
  • 如果此類位於未命名的模塊中,則返回此類的類加載器的未命名模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM