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

标签 java package

如果我有两个不同的包,它们具有相同名称的类,并且我想专门从 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/

相关文章:

java - 使用 Java 使用 wsdl webservice 的简单示例?

r - 在 R 的命名空间中导入有什么好处?

python - DLL 加载失败 : The specified module could not be found PYTHON

java jframe和ImagePanel之间的差距

java - 枚举类型的空指针访问警告

java - 无效类异常 : class invalid for deserialization

Java HttpServletRequest isUserInRole 无法正常工作(根据请求安全性)servlet api 2.4

node.js - yarn 安装中的意外 token

java - 尽管设置正确,Eclipse 仍无法识别自定义类

eclipse - Scala 的相关包导入