How to get module name by class in Java 9?

Pavel_K :

How to get module name by class in Java 9? For example, let's consider the following situation. There are two named modules - ModuleA and ModuleB. ModuleA knows nothing about ModuleB. ModuleB requires ModuleA.

ModuleA contains class:

public class ClassA {

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

ModuleB contains class:

public class ClassB {

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

How to do it?

Naman :

To get a Module by a Class in Java9, you can use the getModule()

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

and further getName on the Module class to fetch the name of the module

String moduleName = module.getName();

An observable point to note (not in your case as you're using named modules) is that the getModule returns the module that this class or interface is a member of.

  • If this class represents an array type then this method returns the Module for the element type.
  • If this class represents a primitive type or void, then the Module object for the java.base module is returned.
  • If this class is in an unnamed module then the unnamed Module of the class loader for this class is returned.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=462677&siteId=1