Java のインポート ステートメントでワイルド カードを使用するのはなぜ悪いのでしょうか? 質問する

Java のインポート ステートメントでワイルド カードを使用するのはなぜ悪いのでしょうか? 質問する

次のような単一のステートメントを使用する方がはるかに便利で簡潔です。

import java.awt.*;

多数の個別のクラスをインポートするよりも

import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Canvas;
...

ステートメントでワイルドカードを使用すると何が問題になりますかimport?

ベストアンサー1

唯一の問題は、ローカル名前空間が乱雑になることです。たとえば、Swing アプリを書いているときに が必要でjava.awt.Event、 を持つ会社のカレンダー システムともインターフェイスしているとしますcom.mycompany.calendar.Event。ワイルドカード メソッドを使用して両方をインポートすると、次の 3 つのうちのいずれかが発生します。

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

すべてのインポートを明示的にリストする利点は、どのクラスを使用するつもりだったのか一目でわかることです。これにより、コードが読みやすくなります。簡単な 1 回限りの作業であれば、明示的に間違っていることはありませんが、それ以外の場合は、将来のメンテナーがあなたの明確さに感謝するでしょう。

おすすめ記事