0

在我学习 Java 的过程中,我尝试了这段编译并运行成功的代码。谁能解释一下为什么编译器没有产生任何错误?我导入了包含 java.util>Scanner 的完整包,所以不应该有一个错误,即 Scanner 已经在 util 包中定义并且我正在尝试在这里重新定义它?

import java.util.*;

class Scanner
{
    public static void main(String... args)
    {
        Scanner c = new Scanner();
    }
}

我的 Java 基础知识不是很清楚,所以如果这似乎完全是一个菜鸟的问题,并且在这个论坛上没有类似的问题,所以我想最好问一下。

4

1 回答 1

-1

一个类不仅由它的名称定义,而且由它的包定义。

在您的情况下,您有两个不同的类:

  • java.util.Scanner
  • your.package.Scanner (对不起,您的包行不是您的代码的一部分)

对于编译器,这些类是不同的,这就是为什么没有出现编译错误的原因。

有关代码示例和可能的用例的更长答案,请查看此处:导入两个具有相同名称的类。怎么处理?

于 2017-02-15T13:43:14.497 回答