2013-08-05 13 views
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.*; 

Ist Scanner ein Paket hier?Unterschied zwischen java.util.Scanner und java.util.Scanner. *

Bearbeiten: Ok, so importierenimportiert die öffentlichen geschachtelten Klassen. Aber was, wenn es auch ein Paket namens Scanner gäbe? Was würde die Aussage import java.util.Scanner.* dann tun?

+10

Die letzte Zeile wird nicht kompiliert, oder? –

+2

[Lesen Sie diese] (http://docs.oracle.com/javase/tutorial/java/package/usepkgs.html). –

+0

@ T.J.Crowder Sure tut es – arshajii

Antwort

18
import java.util.Scanner; 

Diese importiert Scanner (wie Sie bereits wissen).

import java.util.Scanner.*; 

Diese importiert jede öffentliche nested classes innerhalb Scanner definiert.

Diese bestimmte Importanweisung ist nutzlos, da Scanner keine verschachtelten Klassen definiert (und der Import Scanner selbst nicht importiert). Dies kann jedoch mit etwas wie import java.util.Map.* verwendet werden, in diesem Fall Entry (eine Schnittstelle verschachtelt in Map, die häufig im Umgang mit Karten verwendet wird) importiert werden. Ich bin mir sicher, dass es bessere Beispiele gibt, das ist nur das, was mir in den Sinn kam.

All dies ist in JLS §7.5 angegeben (speziell siehe §7.5.1: Single-Type-Import Declarations).


Als Reaktion auf die Bearbeitung des OP:

Ok java.util.Scanner.* importiert die öffentlichen geschachtelten Klassen so importieren. Aber was, wenn es auch ein Paket namens Scanner gäbe? Was würde die Aussage import java.util.Scanner.* dann tun?

In diesem Fall wäre ein Übersetzungsfehler, da das Paket java.util.Scanner mit dem Typ java.util.Scanner kollidieren würde.

16

Das Sternchen nach dem Klassennamen importiert öffentliche verschachtelte Klassen.

Vom Java Tutorials:

Hinweis: Eine andere, weniger verbreitete Form der Import können Sie die öffentlichen geschachtelten Klassen einer einschließenden Klasse importieren. Wenn beispielsweise die Klasse graphics.Rectangle nützliche verschachtelte Klassen wie Rectangle.DoubleWide und Rectangle.Square enthält, können Sie Rectangle und ihre verschachtelten Klassen mit den folgenden beiden Anweisungen importieren.

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

Beachten Sie, dass die zweite Import-Anweisung wird Rectangle nicht importieren.