3

Java でエンティティを修飾する特別な方法がいくつかあることに気付きました。

Object o = new Outer().new Inner();

この場合、Inner クラスを Outer クラスで修飾しているため、Outer クラスのみをインポートする必要があります。

import mypackage.Outer;

このような事例は他にもありますか?(つまり、異常な修飾が発生する場所 - 異常とは、そうでないことを意味しますfullQualifier.identifier)。

自動インポート (java.lang、プリミティブ型など) の場合は除外しています。

4

3 に答える 3

2

あなたが説明した構造を誤解していると思います:

Object o = new Outer().new Inner();

実際には、Innerクラスのコンストラクターを完全に修飾する方法です。

Outer.Inner i = new Outer().new Inner();

一方、次のように書くこともできます。

import path.to.Outer;
import path.to.Outer.Inner;

// ...

Inner i = new Outer().new Inner();
于 2011-01-16T12:37:00.430 に答える
1

また、次の場合はクラスをインポートする必要はありません。

  • オブジェクトへのフル パスを使用します。例えば:

    java.util.Date d = new java.util.Date();
    
  • クラスは同じパッケージに含まれています

  • クラスはjava.langパッケージ内にあります。String
于 2011-01-16T12:53:15.003 に答える
-1

この場合の外部パッケージには内部パッケージが含まれていたため、内部パッケージをインポートする必要はありませんでした。ほとんどの場合、1 つのコンポーネントを使用するためだけにパッケージ全体をインポートする必要はありません。文字列です。java.lang 全体をインポートする必要はありません。一部の複雑なライブラリの使用法では、いくつかの IDE を使用している場合、インポートを修正できます。たとえば、netbeans では ctrl+shift+i でインポートが修正されます。

于 2011-01-16T12:38:35.943 に答える