18
// imports all classes of util package    
import java.util.*;

// imports Scanner class of util package
import java.util.Scanner;

// what does this do?
import java.util.Scanner.*;

Scanner这里有包裹吗?

编辑:好的,所以 importjava.util.Scanner.*导入公共嵌套类。但是如果还有一个名为 的包Scanner呢?那么该声明import java.util.Scanner.*会做什么呢?

4

2 回答 2

18
import java.util.Scanner;

这将导入Scanner(如您所知)。

import java.util.Scanner.*;

导入在Scanner.

这个特定的 import 语句是无用的,因为Scanner它没有定义任何嵌套类(并且 importScanner本身也不会导入)。但是,这可以与类似的东西一起使用import java.util.Map.*,在这种情况下(处理地图时常用Entry的嵌套接口)将被导入。Map我相信有更好的例子,这只是我想到的一个。

所有这些都在JLS §7.5中指定(具体参见§7.5.1: Single-Type-Import Declarations)。


响应 OP 的编辑:

好的,所以 importjava.util.Scanner.*导入公共嵌套类。但是如果还有一个名为 的包Scanner呢?那么该声明import java.util.Scanner.*会做什么呢?

在这种情况下会出现编译错误,因为包java.util.Scanner会与 type 冲突java.util.Scanner

于 2013-08-05T16:40:50.713 回答
16

类名后面的星号导入公共嵌套类。

来自Java 教程

注意:另一种不太常见的导入形式允许您导入封闭类的公共嵌套类。例如,如果 graphics.Rectangle 类包含有用的嵌套类,如 Rectangle.DoubleWide 和 Rectangle.Square,则可以使用以下两个语句导入 Rectangle 及其嵌套类。

import graphics.Rectangle; 
import graphics.Rectangle.*; 

请注意,第二个 import 语句不会导入 Rectangle。

于 2013-08-05T16:41:06.363 回答