繁体   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