インポートの編成
任意のソースファイルを開いた状態で、Source > Organize Imports( Ctrl + Shift + O )とすることにより、インポートを整理することが可能です。この時、次のような整形ルールが適用されます。
- 必要なインポートが追加される。
- 不要なインポートが削除される。
- staticインポートや、Organize Imports 設定の接頭辞ごとに、グループ分けされる。
- グループ分けされた各ブロック内は、アルファベット順に並び替えられる。

インポート文がどのようにグループ分けして記述されるかは、設定画面(Window > Preferences)を開き、Java > Code Style > Organize Imports から確認することができます。例えば次の図のように Organize Imports が設定されている場合、インポート文は java
で始まるパッケージと org
で始まるパッケージとが別のブロックに分けて編成されます。

ファイル保存時に自動でインポートの編成を行う
毎回 Ctrl + Shift + O でインポートの編成を行うのが面倒な場合、保存( Ctrl + S )時に自動でこれを行うよう設定することが可能です。
設定画面(Window > Preferences)を開き、Java > Editor > Save Actions の「Perform the selected actions on save」及び「Organize Imports」にそれぞれチェックを入れることで、保存時のアクションとして Organize Imports が実行されるようになります。

* によるパッケージ全体のインポート文で編成する
インポートの編成時、*
によるパッケージ全体のインポート文で記述されるように設定することも可能です。
*
によるパッケージ全体のインポートの詳細はこちらでまとめています。Java > Code Style > Organize Imports の「Number of imports needed for .*」と「Number of static imports needed for .*」に、それぞれ同じパッケージのインポート文が個別に記述されることを許可する上限数を設定します。これにより、この数を超えて同じパッケージのインポート文が記述された場合、 *
による全体のインポート文を使用するというルールが適用されるようになります。
全てのインポート文で個別の記述を要する場合、例えば「99」のように大きな値を設定しておくことでこれを実現できます。

逆に全て個別でインポートしたいにもかかわらず、意図せず *
でまとめられてしまう場合も、この設定を確認することで解消できます。
インポートの追加
上記の通り、型が解決されずエラーとなっている状態の場合は、Source > Organize Imports( Ctrl + Shift + O )でインポート文の追加が可能です。しかし、既に完全修飾クラス名で記述されている部分は特に再編成は行われません。
このような場合は、Source > Add Import( Ctrl + Shift + M )でインポート文を追加することが可能です。
この時、通常のインポートかstaticインポートかは自動で判別されるため、例えば次のようにカーソルを当てる位置によって、適切なインポート文を自動で追加することができます。
org.junit.jupiter.api.Assertions.assertEquals(expected, actual);
の場合
Assertions
にカーソルを当てて Add Import( Ctrl + Shift + M )Assertions
が通常のインポートで追加されるimport org.junit.jupiter.api.Assertions;
Assertions.assertEquals(expected, actual);
assertEquals
にカーソルを当てて Add Import( Ctrl + Shift + M )assertEquals
がstaticインポートで追加されるimport static org.junit.jupiter.api.Assertions.assertEquals;
assertEquals(expected, actual);