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

Scanner burada bir paket var mı?java.util.Scanner ve java.util.Scanner arasındaki fark. *

Düzeltme: Tamamen içe aktarma java.util.Scanner.* ortak yuvalanmış sınıfları içe aktarır. Ama ya Scanner adında bir paket olsaydı? import java.util.Scanner.* ifadesi ne yapar?

+10

Bu son satır derleme değil, değil mi? –

+2

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

+0

@ T.J.Crowder Emin olun – arshajii

cevap

18
import java.util.Scanner; 

(Bildiğiniz gibi) Bu Scanner ithal ediyor.

import java.util.Scanner.*; 

BuScanner tanımlanan hiçbir nested classes alır.Bu özel içe aktarma ifadesi, Scanner iç içe geçmiş sınıflar tanımlamaması nedeniyle kullanışsızdır (ve içe aktarma Scanner ürününün kendisinin). Ancak, bu import java.util.Map.* gibi bir şeyle kullanılabilir, bu durumda Entry (haritalarla uğraşırken yaygın olarak kullanılan Map iç içe bir arabirim) içe aktarılır. Eminim ki daha iyi örnekler vardır, aklıma gelen budur.

Bunların tümü JLS §7.5 numaralı belgede (özellikle bkz. §7.5.1: Single-Type-Import Declarations) belirtilmiştir. OP'ın düzenlemek cevaben


:

Ok bu yüzden java.util.Scanner.* içe kamu iç içe sınıfları ithal ediyor. Ama ya Scanner adında bir paket olsaydı? import java.util.Scanner.* ifadesi ne yapar? paket java.util.Scanner tip java.util.Scanner ile çarpışmak olacağından

Bu durumda, bir derleme hatası olacaktı.

16

Sınıf adından sonra yıldız işareti genel yuvalanmış sınıfları içe aktarır. Java Tutorials itibaren

:

Not: İçe aktarma başka, daha az yaygın form kapatıcı bir sınıfın kamu iç içe sınıfları ithalat sağlar. Örneğin, graphics.Rectangle sınıfı Rectangle.DoubleWide ve Rectangle.Square gibi yararlı iç içe geçmiş sınıflar içeriyorsa, aşağıdaki iki ifadeyi kullanarak Rectangle ve iç içe geçmiş sınıflarını içe aktarabilirsiniz.

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

ikinci ithalat beyanı Dikdörtgen ithal olmayacak unutmayın.