IntelliJ IDEA 2026.1 Help

変数の抽出 / 導入

理解しにくい式や、コード内の複数の場所で重複している式に遭遇した場合、 変数の導入リファクタリング(Ctrl+Alt+V )を使用すると、そのような式の結果またはその一部を、より単純で理解しやすい別の変数に配置することで、これらの問題に対処できます。 さらに、コードの重複も削減されます。

Java 1.8 以降のバージョンでは、IntelliJ IDEA を使用して 関数型の型変数を抽出することもできます。

お使いの Java バージョンが パターンマッチング(英語)をサポートしており (Java 14 プレビュー以降)、 instanceof チェックでキャスト式を抽出している場合、IntelliJ IDEA は、通常のローカル変数ではなく、その instanceof チェックでパターン変数を導入することがあります。 また、Java 14 バージョン以降では、パターン変数をインライン化できます。 この場合、すべての出現箇所が古いスタイルのキャスト式に置き換えられます。

変数の導入リファクタリングを使用して、可変個引数を新しいスライス変数に抽出できます。

  1. エディターで、抽出する式またはその一部を選択します。 また、キャレットを式内に置くこともできます。この場合、IntelliJ IDEAが潜在的なコード選択のリストを提供します。

  2. Ctrl+Alt+V を押すか、メインメニューで リファクタリング | 抽出 / 導入 | 変数 に移動します。

    または、表示される ツールバー抽出 をクリックし、 変数 を選択します。

    IntelliJ IDEA では、追加のオプションを構成するために使用できる変数の横に the Gear icon も表示されます。

    その他のオプション

    IntelliJ IDEA で複数の出現箇所が見つかった場合は、スコープを指定して、見つかった出現箇所のすべてではなく一部だけを抽出できます。

    変数出現箇所スコープを導入する
  3. ポップアップで提案された名前を選択するか、独自の名前を入力して Enter を押します。

    変数の導入

    また、 final として抽出する変数を宣言することもできます。

    既存の変数を新しい変数に再割り当てする場合は、 Ctrl+Alt+V を押します。 既存の変数が複数ある場合、IntelliJ IDEA は選択できるリストを表示します。

    Shift+Tab を押すと、変数の型を変更できます。

    変数の final 宣言

デフォルトでは、この抽出リファクタリングはエディターで適用されます。 モーダル経由でリファクタリングを適用するように設定を変更するには、 設定 ダイアログ (Ctrl+Alt+S) を開き、 エディター | コード編集 に移動して、 リファクタリング 領域で モーダルダイアログ内 を選択します。

サンプル

コード全体で 2 回発生する anotherClass.inValue() 変数を抽出し、 個数 という名前を付けてみましょう。

public void method() { int a = 1; ... int b = a + anotherClass.intValue(); int c = b + anotherClass.intValue(); }
public void method() { int a = 1; ... int number = anotherClass.intValue(); int b = a + number; int c = b + number; }

func method() { val a = 1 val b = a + anotherClass!!.intValue() val c = b + anotherClass!!.intValue() }
func method() { val a = 1 val number = anotherClass!!.intValue() val b = a + number val c = b + number }

関数型変数を抽出する

このリファクタリングにより、Java 1.8 以降のバージョンの関数式と古いバージョンの Java の匿名クラスが作成されます。

  1. この例では、コードフラグメントを println メソッドの引数として選択します。

    argument_println.png
  2. メインメニューで リファクタリング | 抽出 / 導入 | 関数型変数 へ移動します。

    IntelliJ IDEA は 関数型変数の導入 ダイアログを開きます。

    または、エディターのコンテキストメニューから リファクタリング | リファクタリング Ctrl+Alt+Shift+T を選択し、 関数型変数 を選択します。

    extrct_funtional_var.png
  3. この例のように、選択したコードがインスタンスフィールドに依存している場合、 フィールドをパラメーターとして渡す チェックボックスが表示され、フィールドの代わりにパラメーターを渡すことができます。

    extrct_funtional_var_parameter.png

    ただし、たとえば、選択したコードフラグメントがローカル変数またはパラメーターに依存する場合

    sample_string.png

    対応するエントリがリストに表示されます。

    local_variable_and_parameter.png

    ダイアログ内のいずれかのパラメーターの選択を解除すると、対応するローカル値が代わりに使用されます。

    when_param_deselected.png

    オプションを設定し、 OK をクリックします。

  4. ポップアップから適切な機能インターフェースを選択します。

    functional_interface.png
  5. 必要に応じて、リストで提案された名前を使用しない場合は、抽出された変数の名前を変更します。

    changing_variable_name.png
  6. IntelliJ IDEA は、さらに使用できるラムダを作成します。

    composed_function.png

サンプル

import java.util.List; public class PrintAction implements Runnable { private List<String> data; public PrintAction(List<String> data) { this.data = data; } public void run() { System.out.println("Data: " + data.toString()); } }
import java.util.List; import java.util.function.Function; public class PrintAction implements Runnable { private List<String> data; public PrintAction(List<String> data) { this.data = data; } public void run() { Function<List<String>, String> presenter = (p) -> "Data: " + p.toString(); System.out.println(presenter.apply(data)); } }
2026 年 3 月 30 日