[解決済み] Java の import 文でワイルドカードを使用することは、なぜ悪いのですか?
2022-03-19 07:16:42
質問
のような単一のステートメントを使用する方が、はるかに便利で清潔です。
import java.awt.*;
個々のクラスの束をインポートするよりも
import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Canvas;
...
でワイルドカードを使用することの何が問題なのでしょうか?
import
ステートメントを使用してください。
どのように解決するのですか?
唯一の問題は、ローカルの名前空間が乱雑になることです。 例えば、Swingアプリを書いていて、そのために
java.awt.Event
また、会社のカレンダーシステムと連動しており、カレンダーシステムには
com.mycompany.calendar.Event
. 両方をワイルドカード方式でインポートすると、次の3つのうちどれかが起こる。
-
との間で名前付けの競合が発生します。
java.awt.Event
とcom.mycompany.calendar.Event
ということで、コンパイルもできません。 -
実際にインポートできたのは1つだけです(2つのインポートのうち、1つだけが実行されます)。
.*
しかし、それは間違ったものであり、なぜコードが型が間違っていると主張するのか理解するのに苦労します。 -
コンパイル時に
com.mycompany.calendar.Event
しかし、後で追加されると、それまで有効だったコードが突然コンパイルできなくなります。
すべてのインポートを明示的にリストアップすることの利点は、どのクラスを使おうとしたのかが一目でわかることで、単純にコードを読むのが楽になることです。もし、一回きりの簡単な処理を行うだけなら、何も明示的に いけない しかし、将来のメンテナは、そうでなければ、あなたの明瞭さに感謝するでしょう。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
SpringBootApplication を型解決できない。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] ES6インポートで中括弧を使用するのはどのような場合ですか?
-
[解決済み】array[idx++]+="a "は、Java 8ではidxを1回増やすが、Java 9と10では2回増やすのはなぜか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
javaの模造品QQ WeChatのチャットルーム
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
javaでよく使われる英単語
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
テストが見つかりませんでした
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について