导入两个具有相同类但也包含其他类的包

时间:2014-05-09 20:20:39

标签: java package

如果我有两个不同的包具有相同名称的类,并且我想特别从package1调用class1,我会使用:

import package1.class1;
import package2.*;

但是如果我也想要所有其他类的package1怎么办?正确的代码是:

import package1.*;
import package2.*;

然后

package1.class1 teste = new package1.class1();

1 个答案:

答案 0 :(得分:2)

如果您只是使用通配符导入两个包,则在尝试使用非限定类名时会出现编译错误,因为它不明确:

import package1.*;
import package2.*;

// snipped

// compilation error. 
// No way to tell if you mean package1.class1 or package2.class1
class1 c = new class1(); 

解决此问题的一种方法是完全符合您的使用条件:

// No ambiguity, so no error.
package1.class1 c = new package1.class1(); 

有趣的是,另一种方法是为该特定类添加附加导入。此显式导入优先于任何通配符导入,并解决任何歧义:

import package1.*;
import package2.*;
import package1.class1;

// snipped

// This is an instance of package1.class1.
class1 c = new class1();