1. ホーム
  2. java

[解決済み] 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つのうちどれかが起こる。

  1. との間で名前付けの競合が発生します。 java.awt.Eventcom.mycompany.calendar.Event ということで、コンパイルもできません。
  2. 実際にインポートできたのは1つだけです(2つのインポートのうち、1つだけが実行されます)。 .* しかし、それは間違ったものであり、なぜコードが型が間違っていると主張するのか理解するのに苦労します。
  3. コンパイル時に com.mycompany.calendar.Event しかし、後で追加されると、それまで有効だったコードが突然コンパイルできなくなります。

すべてのインポートを明示的にリストアップすることの利点は、どのクラスを使おうとしたのかが一目でわかることで、単純にコードを読むのが楽になることです。もし、一回きりの簡単な処理を行うだけなら、何も明示的に いけない しかし、将来のメンテナは、そうでなければ、あなたの明瞭さに感謝するでしょう。