自動補完の全体像
IntelliJ IDEA の自動補完は、書いている途中で「次にあり得る候補」を提示して、入力を短縮し、ミスを防ぎます。基本は Ctrl+Space(Mac は ⌃Space)で起動し、より賢い補完(Smart Completion)は Ctrl+Shift+Space(Mac は ⇧⌃Space)。型や文脈、インポート、スコープ、可視性を理解して候補を絞り込むため、「何を呼べるか」「何が適切か」をほぼ常に正しく提案します。
基本補完とスマート補完
Basic completion(Ctrl+Space)
宣言済みの識別子、メソッド、フィールド、クラス名、キーワードを幅広く提示します。部分入力からでも候補が出るため、まずはこれで十分に速く書けます。
List<String> names = new ArrayList<>();
names.add("A");
names.add("B");
// na と打って Ctrl+Space → names, navigate..., naturalOrder... などが出る
JavaSmart completion(Ctrl+Shift+Space)
「ここに入り得る型」を前提に候補を絞ります。文脈理解が強く、無駄な選択肢が減ってスピードが上がります。
Comparator<String> cmp =
// Ctrl+Shift+Space → Comparator<String> を返す候補だけ(Comparator.naturalOrder 等)
JavaOptional<String> opt = Optional.of("hello");
String res =
// Ctrl+Shift+Space → String に評価される候補(opt.orElse("..."), opt.map(...).orElse(...) など)
Java実用補完テクニック(覚えると即効で速くなる)
Postfix completion(後置補完)
「値を書いてから .if .var .null など」を付けると、構文を自動展開します。逆順発想で爆速。
user != null.if // → if (user != null) { ... }
expr.var // → 型推論したローカル変数に割り当て
list.for // → for (Type it : list) { ... }
JavaLive templates(スニペット展開)
短いキーで定型文を展開します。Ctrl+J で一覧、好みのショートカットも自作可能。
sout // → System.out.println($END$);
psvm // → public static void main(String[] args) { ... }
tryf // → try { ... } finally { ... }
JavaImport の自動補完と最適化
未インポートのクラス名も候補に出ます。Enter で選ぶと自動で import が追加されます。Alt+Enter で提案を受け入れ、Ctrl+Alt+O(Mac ⌥⌘O)で不要インポートの整理。
メソッド・引数・オーバーロードの支援
パラメータ情報(Argument hints)
Ctrl+P(Mac ⌘P)で呼び出し位置に応じた引数のシグネチャ一覧を表示。ラベル表示(inlay hints)が有効なら引数名も見えてミスが減ります。
Files.newBufferedReader(path, charset);
// Ctrl+P → (Path, Charset) / (Path) などのオーバーロード候補表示
Javaチェーン補完と流れの提案
ドットを打つと「次の型」の候補に加え、連鎖で意味のある組み合わせを優先提案します(Stream で filter→map→collect など)。
users.stream(). // .filter, .map, .sorted, .collect が並ぶ
Java例外・Null・コレクションの文脈補完
例外の補助
例外が必要な呼び出しでは、throws の追加や try-with-resources の展開を Alt+Enter で提案。補完とクイックフィックスを組み合わせると、構文の組み立てがほぼ自動になります。
Files.readString(path);
// Alt+Enter → 例外をスローする / try に包む の選択肢
JavaNull 安全の後置・テンプレート
.nn(not-null チェックのテンプレート)や Postfix .notnull を使えば、ガード節を瞬時に作れます。Optional の連鎖もスマート補完が型に合わせて促してくれます。
obj.notnull // → if (obj != null) { ... }
Javaコレクションの生成・変換
List.of, Map.of, Collectors.toList 等が候補に自然に出るため、最新の不変コレクションや Stream 変換を迷わず選べます。
うまくいかない時の整え方(重要ポイントの深掘り)
インデックスとキャッシュの再構築
補完が遅い・出ない場合は、ファイルインデックスが崩れていることがあります。Invalidate Caches/Restart を実行すると改善します。
言語レベルと依存の設定を確認
プロジェクトの言語レベルが古いと、var や record に関連する補完が出ません。SDK と言語レベルを実際のコードに合わせます。依存(Maven/Gradle)が解決されていないと、クラスやメソッドが候補に上がらないので同期を完了させます。
型が曖昧なコードをクリアにする
補完は「型」が鍵。メソッドの戻り型が Object のまま、無名のラムダが推論不能、原始型とラッパーが混在、など曖昧な箇所を整えると、候補が一気に賢くなります。
例題で身につける
例 1: Builder でチェーン補完+テンプレート
var sb = new StringBuilder()
.append("ID=").append(42).append(", ")
.append("OK=").append(true);
System.out.println(sb.toString());
// append. と打つと引数の型に応じた候補が並ぶ/sout で出力テンプレート
Java例 2: Stream の宣言的連鎖を補完で組み立て
var total = java.util.stream.Stream.of(1,2,3,4,5)
.filter(x -> x % 2 == 0)
.mapToInt(x -> x * x)
.sum();
Java「.f」まで打つと filter、「.m」までで mapToInt、「.s」で sum がすぐ選べます。ラムダの引数名・型も自動で挿入されます。
例 3: 例外とリソースを補完+クイックフィックスで
import java.nio.file.*;
var p = Path.of("data.txt");
try (var br = java.nio.file.Files.newBufferedReader(p)) {
System.out.println(br.readLine());
}
// newBuff... まで打って補完 → Alt+Enter で try-with-resources へ展開
Java例 4: Live template と Postfix の合わせ技
// sout → System.out.println();
String city = "江東区";
city.nn; // → if (city != null) { ... } (Postfix)
Java仕上げのアドバイス(重要部分のまとめ)
まずは Basic(Ctrl+Space)と Smart(Ctrl+Shift+Space)を指に覚えさせる。Postfix と Live templates を加えると、構文が「考える前に出る」レベルに上がる。補完は型が命なので、戻り型やジェネリクスを曖昧にしない。足りないと感じたら Alt+Enter のクイックフィックスで構文・例外・インポートを自動化し、プロジェクト設定(言語レベル・依存)を整える——この型が身につけば、キー入力は激減し、ミスは自然に消えます。
