【问题标题】:Import two packages that have the same classe but also other classes导入两个具有相同类但也具有其他类的包
【发布时间】:2014-05-10 04:28:10
【问题描述】:

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

import package1.class1;
import package2.*;

但是如果我还想要 package1 的所有其他类呢?正确的代码是:

import package1.*;
import package2.*;

然后

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

?

【问题讨论】:

  • 是的,这是正确的方法。还讨论了here

标签: java package


【解决方案1】:

如果你只用通配符导入这两个包,你会在尝试使用不合格的类名时得到一个编译错误,因为它会模棱两可:

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(); 

【讨论】:

  • +1 这种额外的方式是我选择 SO 的最大原因之一 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多