如果我有两个不同的包,它们具有相同名称的类,并且我想专门从 package1 调用 class1,我会使用:
import package1.class1;
import package2.*;
但是如果我还想要 package1 的所有其他类怎么办?正确的代码是:
import package1.*;
import package2.*;
然后
package1.class1 teste = new package1.class1();
?
最佳答案
如果您只是使用通配符导入两个包,那么在尝试使用非限定类名时将会出现编译错误,因为它会产生歧义:
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();
关于java - 导入两个具有相同类但也具有其他类的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573307/