如何在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);
}
}
怎么做?
答案 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对象。- 如果此类位于未命名的模块中,则返回此类的类加载器的未命名模块。