論理的な質問があります: Java のすべてのパッケージからすべてのパッケージをインポートできないのはなぜですか? たとえば、java.awt からすべてのクラスをインポートできます。
import java.awt.*;
ただし、次のことはできません。
import java.awt.*.*;
私の目的は、awt.image と awt.event などからすべてのものをインポートすることです。これを行う別の方法はありますか?
ありがとうございました!
import a.package.*.*;
Java でを実現する方法はありません。JLS のセクション 7.5では、合法的なインポートの種類を 4 つだけ指定しています。
single-type-import 宣言 (§7.5.1) は、正規名 (§6.7) に言及することによって、単一の名前付き型をインポートします。
例えばimport java.util.List;
タイプ インポート オン デマンド宣言 (§7.5.2) は、タイプまたはパッケージの正規名に言及することにより、必要に応じて名前付きタイプまたは名前付きパッケージのすべてのアクセス可能なタイプ (§6.6) をインポートします。
例えばimport java.awt.*;
single-static-import 宣言 (§7.5.3) は、正規名を指定することにより、指定された名前を持つすべてのアクセス可能な静的メンバーを型からインポートします。
例えばimport static org.junit.Assert.assertEquals;
static-import-on-demand 宣言 (§7.5.4) は、型の正規名を指定することにより、必要に応じて名前付き型のアクセス可能なすべての静的メンバーをインポートします。
例えばimport static org.junit.Assert.*;
パッケージでは、同じ名前のクラスを個別に参照できます。たとえば、 と がjava.awt.List
ありjava.util.List
ます。誰かがすべてをインポートするのを止めるものjava.*.*;
. その場合、どのようList
に解決されますか?あいまいさが多すぎるでしょう。
いいえ、ワイルドカード インポートを使用すると、コードが読みにくくなるため、一般的に悪いスタイルになります。
ワイルドカード インポートを使用する場合のいくつかの欠点:
編集:必要以上のクラスをインポートしてもかさばるコードにはならないようですが、クラスを明示的にインポートして、自分が何を扱っているかを明確に把握することをお勧めします。