2011-03-15 8 views
5

たとえば、サードパーティライブラリは、パッケージに非常に複雑なディレクトリ構造を使用します。 すぐにインポートできますか?スターは1つのディレクトリレベルしかインポートできません。あなたはあなたのような何かを行うことができますかどうかを求めていると仮定すると、Javaの場合、一度にすべてのパッケージをインポートできますか?

+4

必要なものを自動的にインポートできるEclipseのようなIDEを使用してみませんか? – Wolph

+0

インポートを最小限に抑えます。理想的には、必要な特定のクラスにのみインポートしてください。 @WoLpHが書いているように、まともなIDEがあなたのためにこれを行います。 Overbroad importsはノイズが多く、名前空間のシャドーイングの問題を混乱させる原因となっています。 – andersoj

+0

最小文字制限を超えるだけです:いいえ。 – biziclop

答えて

14

import com.example.*; 
// expecting packages like com.example.foo.* and com.example.bar.* to be imported 

は次に答えがではありません。あなたが作ることができる最も広いインポートは、星を持つ単一のパッケージです。

JLS(セクション7.5)definesインポートステートメントの構造。

さらに、一度に多数のパッケージをインポートすることは、コンパイラにとって問題になります。 2つのパッケージが同じタイプを提供し、両方がインポートされ、そのタイプがクラスで使用される場合、コンパイル時エラーが発生します。これはJLS 6.5.5.1に記載されている:

そうでない場合、その名前の型は、名前として 曖昧である、 コンパイル単位の複数 型インポートオンデマンド宣言で宣言さ ある場合タイプ名。 コンパイル時エラーが発生します。 Ctrl + Shiftキー:あなたはJavaで指摘したように

+0

+1、すてきで明確な答え。 –

+0

@Robしかし、サブパッケージ内の多くのクラスは、競合するクラス名を持たないように意図的に名前が付けられています。将来のJavaバージョンでダブルアスタリスクを許可した場合、素晴らしいでしょう。 'a.b.c。** '内のすべてをインポートするための' a.b.c。**'。 – Pacerier

3

あなただけの「1レベル」の輸入があるべき「*」

、より効果的な方法は、Eclipse、オープンクラスを開くことですが使用するインポートおよびプレスを使用することができます+ O :) - 最近ではすべてのIDEがインポートの整理に役立ちます

3

IDEから「整理インポート」(ほとんどの主要なJava IDEがこれを行う)を使用することを強くお勧めします。

また、私はあなたの輸入品に「*」を使用することについて助言しており、その理由は簡単です。インポートするライブラリ(またはjdk)をアップグレードし、パッケージ内のいくつかの新しいクラスが原因で名前の衝突が発生することがあります(静的インポートの場合は特にそうです)。あなたの現在のプロジェクトの中でクラスに起こることは大したことではないかもしれませんが、ある時点でそのコードをライブラリにすると、衝突するインポートを調整した後でそのクラスを再コンパイルする必要があるため、

(はい、それは私が再構築するためのライブラリのソースコードを追い詰めるために持っていたとして、それは苦痛だった...ではないので、ずっと前に私に起こった。)

自分で保存道をいくつかの問題を。 :DのJSPの場合のように

0

、私はJavaクラスのサードパーティのライブラリから必要なすべてのクラスをインポートするための.incファイルを使用することができます

0

あなたが唯一のディレクトリレベルをインポートすることができます。

IntelliJのはCtrl + Alt + Oショートカットに役立つことができます:

  • 整理既存の輸入
  • 削除不要な輸入
  • アドオンに必要な輸入

ます。また、自動調整することができます[設定]→[エディタ]→[一般]→[自動インポート]の[インポート設定]

0

Fo R基本的な使い方だけが使用できます。

import java.*; 
    import javax.*; 

*は、すべての

java.*; 

のJavaパッケージ内のすべてのクラスです。