2012-04-25 19 views
4

私はimportで予期しない結果に気付きました。本当に何が起こっているのか理解したいと思っています。Javaインポートのワイルドカードはどのように機能しますか?

import java.util.*; 
import java.io.*; 
import java.nio.*; 
import java.nio.file.Path; 
import java.nio.file.StandardOpenOption.*; 
import java.nio.file.Paths; 

、その後... ArrayListListIteratorが機能しなかったことがわかったので、私は

import java.util.ArrayList; 
import java.util.ListIterator; 

を追加し、すべてが完璧に動作します:私は次のように開始しました。

私はjava.util.*ArrayListListIteratorをインポートしたと仮定します。それはなぜですか?

私はクラス/メソッド/変数名で過度に冗長になる傾向がありましたが、残りのプログラムでもが見つかっていませんでした。を予約語にしました。

なぜこのようなことが起こるのかを説明する文書には何も見つかりません。また、スタックに関する議論の大部分は、*対明示的にコード化されたインポートを使用した最適化に関するものです。

誰も私がこの動作を理解するために何を見ることができますか?

+2

*「正確には」「うまくいかない」とはどういう意味ですか?問題を示す短くて完全なプログラムを表示できますか? –

+0

問題が発生していません –

+0

問題を実証できる最小限の例を作成してください。あなたの既存の大規模なクラスを使用しないでください。 –

答えて

6

import java.util.*間違いなくのインポートjava.util.ArrayListとそのパッケージに含まれるすべてのものも含まれます。サブパッケージの概念はないので、java.util.xまたはjava.util.yから何もインポートすることはできませんが、問題の場合はそうではありません。

コードがうまくいかない場合は、他の問題が発生している可能性があります。インポートステートメントは、記述したとおりに正しく動作します。

0

私は日食で試しました。

import java.util.*; 

これらの両方のクラスは、再度インポートする必要はありません。

import java.util.ArrayList; 
import java.util.ListIterator; 

ワイルドカード*手段は、すべてのサブクラスとパッケージをインポートしているため(サブクラスをパッケージ化しませ覚えている)

あなたは

import java.util.*; 

をインポートする場合、私はするjava.util.jarパッケージをインポートしますjarサブクラスではありません :)

関連する問題