簡體   English   中英

如何在不同的包中導入兩個具有相同名稱的類?

[英]How to import two classes with the same name in different packages?

我想導入這兩個類(都命名為Query -一個是JDO類,另一個是JPA類,以便在同一類的不同方法中使用。

import javax.jdo.Query;
import javax.persistence.Query;

有沒有辦法同時在文件頂部同時全局導入這兩個文件?

恐怕不行。 但是您不必導入類即可使用它:只需按其全名引用其中一個類,例如

javax.jdo.Query query = getJDOQuery();
query.doSomething();

然后,您可以導入另一個沒有名稱沖突的文件。

順便說一句,有時候,如果您在類中開始遇到諸如此類的沖突之類的話,這是重構的微妙暗示:將一個大類的功能拆分為幾個小類。

import語句的唯一目的是為標准名稱建立簡寫別名。 如果允許您同時導入這兩個代碼,則將造成歧義性,需要類型推斷來解決,並使代碼極難閱讀。

現有答案是正確的。 我想向您展示如何在Kotlin( docs )中處理類名沖突。

如果存在名稱沖突,我們可以使用as關鍵字在本地重命名沖突實體來消除歧義:

import javax.jdo.Query // Query is accessible
import javax.persistence.Query as jpaQuery // jpaQuery stands for 'javax.persistence.Query'

這就是為什么您應該在下一個項目中考慮Kotlin的+1原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM