首页 > 解决方案 > Java/Kotlin - 区分不同模块的相同限定名

问题描述

我有一个案例,我有两个包含相同包和类名的模块......

模块一

io.foo.Bar

模块二

io.foo.Bar

无论哪种情况,如果我打电话,Bar.class.getQualifiedName()我都会收到相同的字符串。

有没有办法将它们完全区分开来?

标签: javaclasskotlinreflection

解决方案


我相信模块一和模块二可以在类路径中以不同的名称在单独的 jar 中使用,例如 module-one.jar 或 module-two.jar。现在您可以使用反射来准确命名 jar,如下所示:

    Class clz = Bar.class;
    URL location = clz.getProtectionDomain().getCodeSource().getLocation();
    System.out.println(location);

上面的代码将给出如下输出:

file:<jar location>/<jarname>.jar

这个答案是受这个问题启发的,有关更多信息,请仔细阅读该问题。


推荐阅读