簡體   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