java.util.Scanner和java.util.Scanner之间的区别.*

abh*_*dey 18 java

// 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.*;
Run Code Online (Sandbox Code Playgroud)

这是Scanner一个包吗?

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

ars*_*jii 18

import java.util.Scanner;
Run Code Online (Sandbox Code Playgroud)

这导入Scanner(如您所知).

import java.util.Scanner.*;
Run Code Online (Sandbox Code Playgroud)

这会导入其中定义的所有公共嵌套类Scanner.

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

所有这些都在JLS§7.5中指定(具体来说,参见§7.5.1:单一类型导入声明).


响应OP的编辑:

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

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


ktm*_*124 16

classname后面的星号导入公共嵌套类.

来自Java教程:

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

import graphics.Rectangle; 
import graphics.Rectangle.*; 
Run Code Online (Sandbox Code Playgroud)

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