繁体   English   中英

从2个不同的模块导入具有相同名称和包的2个不同的类

[英]Importing 2 different classes with same name and packages from 2 different modules

在我的项目中,我有2个子模块,我们将它们分别称为模块A和模块B。它们都具有com.example.MyClass.java的结构作为其类。

我有第三个模块C,我想使用A和B中的类。

但是,当我尝试这样做时,我只能从下添加的第一个模块中实现类。

有没有类似A.com.example.MyClass和B.com.example.MyClass的方法,所以我可以在同一个类中使用它们?

首先,这听起来像是我的设计缺陷,这是因为在包级别上具有与在maven模块级别上尚未分离的相同的包名称声音,因此也不能在包级别上代表相同的隔离级别。 如果您有不同的类组,通常会发生这种情况...除此之外,如果您拥有完全相同的包和类名,这是完全不可能的,因为在此违反的包中,类名必须是唯一的。 结果将在提供相同类的classpath上具有两个不同的JAR。 实际使用的类取决于哪个JAR首先位于类路径上,这是巧合的,因此无法预测。

OSGi在这里无济于事,因为您有同样的问题,在这里由于您想从不同的包访问相同的类而无法解决。 此外,在JDK 9中这也不起作用,因为必须公开这些类(与OSGi中相同),这也会失败。

如果要使两个类具有相同的名称,则必须更改其中一个类的程序包名称。 否则,将无法导入两个类。

另一种解决方案是更改其中一个类的类名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM