5

大学でのプログラミングのクラスでは、パッケージの 1 つのクラスを使用しただけでも、パッケージ全体をインポートするだけでした。これは、オートコンプリートやそのような凝ったものを提供しない IDE を使用することになっていたためである可能性があり、一般的にコーディングが容易になるだけです。

しかし、私は経験豊富なプログラマーになったので、Java パッケージ全体をインポートするのが一般的ですか、それとも必要なパッケージのクラスだけをインポートするのが一般的ですか?

たとえば、次の代わりに:

import java.util.*;

次のように言うのは慣習的ですか?

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

等。?

選択したクラスと比較してパッケージ全体をインポートすると、より多くのメモリが使用されますか?

4

5 に答える 5

5

これはメモリの問題ではなく、* 表記を使用すると間違ったクラスを誤ってインポートしてしまう危険性があります。通常、これは問題ではありませんが、* が別のパッケージから取得するつもりだったクラスと一致する場合、見つけにくいバグです。

パッケージから 3 つ以上のクラスをインポートする場合、特定のクラスのインポートが単一の '*' インポート ステートメントに置き換えられるというルールを IDE が使用しているのを見てきました。インポートされた各クラスを名前で呼び出すことを好みます。

于 2013-08-31T03:36:28.720 に答える
3

あなたが与えたように、このワイルドカード型インポートオンデマンド宣言はimport java.util.*;、コードで直接使用してはなりません。代わりに必要なクラス名のみを使用してくださいimport java.util.ArrayList;

以下の理由やその他の多くの理由があります。

  • 重要な理由は、新しい予期しないクラス ファイルが同じパッケージに追加される可能性があるためです。この新しいクラスは、別のパッケージから使用しているタイプと競合する可能性があるため、プログラム自体に影響を与えることなく、以前は正しかったプログラムが正しくないプログラムに変わります。

  • 明示的なクラスのインポートは、使用されている正確なクラス (および使用されていないクラス) を読者に明確に伝えます。

  • 明示的なクラスのインポートにより、コンパイルのパフォーマンスが向上します。オンデマンド型インポート宣言はプログラマーにとって便利で、最初は少し時間を節約できますが、ファイルがコンパイルされるたびにコンパイル時間が長くなります。

コーディング規約の詳細については、http: //geosoft.no/development/javastyle.html#を参照してください。

于 2013-08-31T05:38:18.653 に答える
0

@Chris Gerkenには良い点があります。

しかし、それは単なるバグではありません。(新しいバージョンで) 既に使用しているクラスと同じ名前の新しいクラスを追加する更新されたライブラリに対して再コンパイルすると、ワイルドカード インポートによって問題が発生する可能性があります。そのため、ワイルドカード インポートは長期的にはコードをより脆弱にする傾向があります。

于 2013-08-31T03:50:36.933 に答える