如果我有两个不同的包具有相同名称的类,并且我想特别从package1调用class1,我会使用:
import package1.class1;
import package2.*;
但是如果我也想要所有其他类的package1怎么办?正确的代码是:
import package1.*;
import package2.*;
然后
package1.class1 teste = new package1.class1();
答案 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();