我想导入这两个类,都命名为Query
- 一个是JDO类,另一个是JPA类,以便在同一类中的不同方法中使用。
import javax.jdo.Query;
import javax.persistence.Query;
有没有办法在文件顶部同时全局导入它们?
我想导入这两个类,都命名为Query
- 一个是JDO类,另一个是JPA类,以便在同一类中的不同方法中使用。
import javax.jdo.Query;
import javax.persistence.Query;
有没有办法在文件顶部同时全局导入它们?
恐怕,没有。但是您不必导入类来使用它:只需按其全名引用其中一个类,例如
javax.jdo.Query query = getJDOQuery();
query.doSomething();
然后你可以导入另一个没有名称冲突的。
顺便说一句,有时如果你开始在你的类中得到很多这样的名称这样的冲突,这是重构的一个微妙提示:将一个大类的功能拆分为几个小类。
现有答案是正确的。我想向您展示如何在 Kotlin ( docs ) 中处理类名冲突。
如果存在名称冲突,我们可以使用as
关键字在本地重命名冲突实体来消除歧义:
import javax.jdo.Query // Query is accessible
import javax.persistence.Query as jpaQuery // jpaQuery stands for 'javax.persistence.Query'
这就是为什么您应该在下一个项目中考虑使用Kotlin的 +1 原因。
语句的唯一目的import
是为完全限定名称建立一个速记别名。如果您被允许同时导入两者,您将创建一个需要类型推断来解决的歧义,并使您的代码极难阅读。