🐯

【IntelliJ】`import java.util.UUID`が自動でワイルドカード化(`java.util.*`)されないようにする

2023/07/09に公開

背景

IntelliJでKotlinを実装していた時、import java.util.UUIDが自動でimport java.util.*に最適化されてしまう現象に悩まされました 🤔
この記事は、その設定を変更する方法を整理したものです。

結論

  1. ⌘ + ,Preferencesを開く(MACの場合)
  2. Editor -> Code Style -> Kotlin でKotlinのコードスタイル設定を開く
  3. Importsタブを選択し、 Packages to Use Import with "*" の設定項目を確認。
  4. import java.util.*を削除(該当の行を選択して-ボタンをクリック)

参考

java.util.Dateで同様の悩みを訴えた方のissue
https://youtrack.jetbrains.com/issue/KTIJ-14112/Kotlin-java.util.Date-keeps-being-optimized-to-java.util.-despite-import-settings

(似ているが原因が異なる事象について)

同じパッケージからインポートするクラス数が指定の数を超えると、自動でワイルドカードを使う設定がデフォルトで有効になっています。
こちらの場合の対応については以下の公式ドキュメントを参照してみてください。
ワイルドカードのインポートを無効にする | 自動インポート | IntelliJ IDEA ドキュメント

終わりに

IntelliJインストール時の初期設定だとjava.utilパッケージ配下のクラスは、自動でimport java.util.*に最適化されてる設定がデフォルトになっている[1]ようです。
なんでこうなってるの?みたいな議論[2]も見かけたので、もしかしたらいつか修正されるかもしれません。
私もデフォルトでそうなっているとは思わず、変な設定しちゃったかな...と原因の特定に時間がかかってしまいました。
日本語でちょうど当てはまる記事を見つけられなかったので、この記事が同じ事象で悩む方の参考になれば幸いです。

脚注
  1. intellij-community/plugins/kotlin/formatter/src/org/jetbrains/kotlin/idea/core/formatter/KotlinCodeStyleSettings.java at e6d7eb23aacc731b7d4c220f64e188d48b8b5161 · JetBrains/intellij-community ↩︎

  2. [Kotlin] java.util.Date keeps being optimized to java.util.* despite import settings : KTIJ-14112 のコメント欄参照 ↩︎

Discussion