如何在不同的包中导入两个具有相同名称的类?
问题描述:
我想导入这两个类,并重命名为Query
- 一个JDO类,另一个是JPA类,以不同的方式在同一个类中使用。如何在不同的包中导入两个具有相同名称的类?
import javax.jdo.Query;
import javax.persistence.Query;
有没有办法在文件顶部同时全局导入它们两个?
答
恐怕没有。但你不必进口类中使用它:刚才提到的一个类由它的全名,如
javax.jdo.Query query = getJDOQuery();
query.doSomething();
然后你可以导入另一个没有名称冲突。
顺便说一句,有时如果你开始得到很多这样的名称这种碰撞在你的类,它是重构一个微妙的暗示:几个小之间的一个大类的分裂功能。
答
的import
声明的唯一目的是建立一个速记别名一个完全合格的名称。如果你被允许进口的两种,你会创建需要的类型推断来解决,并且使你的代码非常难以阅读的歧义。
@Ment - 嗯,Java语言不允许,而且它不支持typedef'的'相当于两种。 – 2010-09-17 00:02:35
当然,这将是很酷,但它不工作的方式(还)。 – erickson 2010-09-17 03:26:41