2017-03-13 33 views
8

Java dilini daha iyi anlamak için Java 8 belirtimini okuyorum.İçe aktarma bildirimi

Özellikle, Bölüm 7 Paketler.

import PackageOrTypeName . * ; 

şartname:

Ancak 7.5.2 7.5.2 Tip-Import-on-Demand Beyannameler I aşağıdaki sözdizimine göre TypeName kullanabilirsiniz durumda anlamıyorum söyler: PackageOrTypeName bir tür (§6.5.4), daha sonra adı (§6.5.5.2) uygun olmalıdır temsil eder, veya bir derleme zamanı hatası oluşur

edin.

yüzden 6.5.4 atlamak ancak aşağıdaki çok belirsizdir:

PackageOrTypeName, Q ise Q adında bir tip kapsamında, sonra PackageOrTypeName hesabına sınıflanmıştır oluşur bir TypeName olarak. Aksi halde, PackageOrTypeName bir PackageName olarak yeniden sınıflandırılır. PackageOrTypeName öğesinin anlamı, yeniden sınıflandırılan adın anlamıdır.

TypeName'u nasıl kullanacağımı hayal edemiyorum.

Lütfen, *TypeName ile içe aktarma türleri için bana bir örnek verebilir misiniz?

cevap

10

Yuvalanmış sınıfları unutuyor gibisiniz. Bir örnek olacaktır:

import java.util.Map.*; 

Hangi Entry içe olacaktır. Şimdi bu (vasıfsız) gibi kullanılabilir:

Entry<String, String> e = ...; 

bu ithalat yapmanın bir başka yolu ise:

java.util.Map bir tür adıdır
import java.util.Map.Entry; 

.

+0

Başka bir örnek, statik işlevlerin bazı sınıf –

+1

@RC'den içe aktarılmasıdır. Bunu düşünmüştüm, ancak bu durum, import import PackageOrTypeName. *; '. –