如何在不同的包中导入两个具有相同名称的类?

问题描述:

我想导入这两个类,并重命名为Query - 一个JDO类,另一个是JPA类,以不同的方式在同一个类中使用。如何在不同的包中导入两个具有相同名称的类?

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

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

恐怕没有。但你不必进口类中使用它:刚才提到的一个类由它的全名,如

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

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

顺便说一句,有时如果你开始得到很多这样的名称这种碰撞在你的类,它是重构一个微妙的暗示:几个小之间的一个大类的分裂功能。

import声明的唯一目的是建立一个速记别名一个完全合格的名称。如果你被允许进口的两种,你会创建需要的类型推断来解决,并且使你的代码非常难以阅读的歧义。

+2

@Ment - 嗯,Java语言不允许,而且它不支持typedef'的'相当于两种。 – 2010-09-17 00:02:35

+0

当然,这将是很酷,但它不工作的方式(还)。 – erickson 2010-09-17 03:26:41