Java | 基礎文法:Intellij の自動補完

Java Java
スポンサーリンク

自動補完の全体像

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... などが出る
Java

Smart completion(Ctrl+Shift+Space)

「ここに入り得る型」を前提に候補を絞ります。文脈理解が強く、無駄な選択肢が減ってスピードが上がります。

Comparator<String> cmp =
    // Ctrl+Shift+Space → Comparator<String> を返す候補だけ(Comparator.naturalOrder 等)
Java
Optional<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) { ... }
Java

Live templates(スニペット展開)

短いキーで定型文を展開します。Ctrl+J で一覧、好みのショートカットも自作可能。

sout  // → System.out.println($END$);
psvm  // → public static void main(String[] args) { ... }
tryf  // → try { ... } finally { ... }
Java

Import の自動補完と最適化

未インポートのクラス名も候補に出ます。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 に包む の選択肢
Java

Null 安全の後置・テンプレート

.nn(not-null チェックのテンプレート)や Postfix .notnull を使えば、ガード節を瞬時に作れます。Optional の連鎖もスマート補完が型に合わせて促してくれます。

obj.notnull  // → if (obj != null) { ... }
Java

コレクションの生成・変換

List.of, Map.of, Collectors.toList 等が候補に自然に出るため、最新の不変コレクションや Stream 変換を迷わず選べます。


うまくいかない時の整え方(重要ポイントの深掘り)

インデックスとキャッシュの再構築

補完が遅い・出ない場合は、ファイルインデックスが崩れていることがあります。Invalidate Caches/Restart を実行すると改善します。

言語レベルと依存の設定を確認

プロジェクトの言語レベルが古いと、varrecord に関連する補完が出ません。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 のクイックフィックスで構文・例外・インポートを自動化し、プロジェクト設定(言語レベル・依存)を整える——この型が身につけば、キー入力は激減し、ミスは自然に消えます。

タイトルとURLをコピーしました