10

我想导入这两个类,都命名为Query- 一个是JDO类,另一个是JPA类,以便在同一类中的不同方法中使用。

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

有没有办法在文件顶部同时全局导入它们?

4

3 回答 3

18

恐怕,没有。但是您不必导入类来使用它:只需按其全名引用其中一个类,例如

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

然后你可以导入另一个没有名称冲突的。

顺便说一句,有时如果你开始在你的类中得到很多这样的名称这样的冲突,这是重构的一个微妙提示:将一个大类的功能拆分为几个小类。

于 2010-09-16T21:57:22.057 回答
4

现有答案是正确的。我想向您展示如何在 Kotlin ( docs ) 中处理类名冲突。

如果存在名称冲突,我们可以使用as关键字在本地重命名冲突实体来消除歧义:

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

这就是为什么您应该在下一个项目中考虑使用Kotlin的 +1 原因。

于 2018-05-03T13:24:23.120 回答
2

语句的唯一目的import是为完全限定名称建立一个速记别名。如果您被允许同时导入两者,您将创建一个需要类型推断来解决的歧义,并使您的代码极难阅读。

于 2010-09-16T22:57:01.083 回答