解决包冲突

时间:2010-08-17 10:38:15

标签: java packages

假设我们有一个名为com.example1的包,其中包含Hello类(以及其他类)。

然后我们有另一个包com.example2也包含Hello类(显然有不同的行为)。

现在让我们假设我们需要com.example1中的每个类和com.example2中的Hello类

import com.example1.*;
import com.example2.Hello;

在这种情况下会调用哪一个?

Hello hello = new Hello();

或者这会产生编译错误吗?

出于好奇,这只是一个理论问题。

由于创建包是为了避免命名冲突,当两个包包含两个具有相同名称的类时会发生什么?

3 个答案:

答案 0 :(得分:5)

它会产生编译错误。您必须明确命名该类 - com.example2.Hello hello = new com.example2.Hello();

答案 1 :(得分:2)

最好在你的声明中明确指出,而不是让它失去机会。这是一个编译错误。

java.util.Listjava.awt.List经常发生类似的冲突。如果你是明确的,那就没有混淆。

答案 2 :(得分:0)

它不会像其他用户所说的那样给出编译器错误。它将使用com.example2.Hello。这是因为显式导入(com.example2.Hello)始终具有优先级而不是* import(com.example1。*)。