Pav*_*l_K 7 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?
}
}
Run Code Online (Sandbox Code Playgroud)
ModuleB包含类:
public class ClassB {
public void doIt() {
ClassA objectA = new ClassA();
objectA.printModuleName(ClassB.class);
}
}
Run Code Online (Sandbox Code Playgroud)
怎么做?
为了得到一个Module由Class在Java9,您可以使用getModule()
Module module = com.foo.bar.YourClass.class.getModule();
Run Code Online (Sandbox Code Playgroud)
并进一步getName在Module类上获取模块的名称
String moduleName = module.getName();
Run Code Online (Sandbox Code Playgroud)
一个可观察的注意事项(在您使用命名模块时不是这种情况)是getModule返回此类或接口所属的模块.
- 如果此类表示数组类型,则此方法返回元素类型的Module.
- 如果此类表示基本类型或void,则
java.base返回模块的Module对象.- 如果此类位于未命名的模块中,则返回此类的类加载器的未命名模块.
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |