如何在Java 9中按类获取模块名称?

时间:2017-09-17 17:55:31

标签: java java-9 java-module

如何在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);
    }
}

怎么做?

1 个答案:

答案 0 :(得分:6)

要在Java9中通过 Module 获得 Class ,您可以使用getModule()

Module

并在String moduleName = module.getName(); 类上进一步getName以获取模块的名称

getModule

一个可观察的注意事项(在您使用命名模块时不是这种情况)是 java.base 返回此类或接口所属的模块。

  
      
  • 如果此类表示数组类型,则此方法返回元素类型的Module。
  •   
  • 如果此类表示基本类型或void,则返回.ui-tabs .ui-tabs-panel { height: 140px; padding: 20px 40px; margin: 0px 30px 80px 30px; background: #5643ce; border-radius: 5px; color: #FFF; position: relative; } .ui-tabs .ui-tabs-panel:before { content: ""; top: 10px; left: 5px; position: absolute; height: 80%; width: 100%; transform: rotate(-5deg); box-shadow: 7px 6px 15px #333; } 模块的Module对象。
  •   
  • 如果此类位于未命名的模块中,则返回此类的类加载器的未命名模块。
  •