0

私はTroveコレクションを使用しています。より具体的には、int のプリミティブ arrayList を使用しています。

リストの宣言は次のとおりです。

TIntArrayList list= new TIntArrayList();

ただし、説明できないコンパイルエラーに直面しています。次のようにリストを宣言すると:

import gnu.trove.list.array.TIntArrayList;

public class Main {

   TIntArrayList list= new TIntArrayList();
}

、コードは期待どおりに正しく実行されます。ただし、次のように (別の import ステートメントを使用して) リストを宣言すると、次のようになります。

import gnu.trove.*; 

public class Main {

    TIntArrayList list= new TIntArrayList();
}

、TIntArrayListを認識しないというコンパイルエラーが表示されます。

なぜこのエラーが表示されるのか疑問に思っていました。*リストを使うことで認識されるべきだと思いました。java.util.*;の代わりに を使用すると、このエラーは表示されませんjava.util.arrayList;

4

2 に答える 2

6

違いは、*はサブレベルをインポートせず、現在のレベルのすべてのみをインポートすることです。を使用import gnu.trove.list.array.*すると、期待どおりに動作します。

それが機能する理由java.util.*は、ArrayListクラスがワイルドカードと同じフォルダーにあるためです。

于 2013-08-12T21:40:12.563 に答える
1

追加は、その.*パッケージ名を表すディレクトリ内のすべてのクラスに対してのみカウントされます。Java パッケージ名は実際にはディレクトリではありません。ディレクトリは単にクラスを編成するために使用されます。

于 2013-08-12T21:41:18.717 に答える