IntelliJ IDEA 2026.1 Help

インライン化

インライン化リファクタリングを使用すると、メソッド、コンストラクター、パラメーター、スーパークラス、匿名クラス、クロージャー (Swift の場合) の 抽出 リファクタリングを反転させることができます。

Java 14 バージョン以降、 パターン変数をインライン化できます。 この場合、すべての出現箇所が古いスタイルのキャスト式に置き換えられます。

  1. インライン化するコードフラグメントにキャレットを配置します。

  2. Ctrl+Alt+N を押す。 または、コードフラグメントを右クリックし、 リファクタリング メニューから必要なインラインリファクタリングを選択します。

  3. インライン化 ダイアログで、インライン化オプションを指定します。

  4. (オプション)変更をプレビューするには、 プレビュー を選択します。

  5. プレビューと変更の適用

    現在、CLion では、 関数のインライン化というリファクタリングを提供しています。これは メソッドの抽出 リファクタリングとは逆の操作です。

    サンプル

    変数のインライン化

    変数のインライン化リファクタリングは、冗長な変数の使用をイニシャライザーに置き換えます。

    例 1

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

    例 2

    public void method() { AnotherClass.InnerClass aClass = anotherClass.innerClass; int a = aClass.i; }
    public void method() { int a = anotherClass.innerClass.i; }

    メソッドのインライン化

    メソッドのインライン化は、メソッドの本体をその呼び出し元の本体に配置することになります。

    例 1

    public void method() { int c=add(a,b); int d=add(a,c); } private int add(int a, int b) { return a+b; }
    public void method() { int c= a + b; int d= a + c; }

    例 2

    public ArrayList method() { String[] strings = {"a","b","c"}; ArrayList list=add(strings); return list; } private ArrayList add(String[] strings) { ArrayList list = new ArrayList(); for (int i=0; i< strings.length; i++) {list.add(strings[i]);} return list; }
    public ArrayList method() { String[] strings = {"a","ab","abc"}; ArrayList list1 = new ArrayList(); for (int i=0; i< strings.length; i++) {list.add(strings[i]);} ArrayList list = list1; return list; }

    インライン抽象メソッド

    正確に 1 つの実装を持つ抽象メソッドをインライン化すると、メソッドの呼び出しが具体的な実装のコードに置き換えられ、メソッドの宣言とその呼び出しが不要になります。

    public interface AnInterface { int readValue(); } class AClass implements AnInterface { public int readValue() { return 1; } } class UserClass{ void doSmth(){ AnInterface a = new AClass(); int i = a.readValue(); } }
    public interface AnInterface { int readValue(); } class AClass implements AnInterface { public int readValue() { return 1; } } class UserClass{ void doSmth(){ AnInterface a = new AClass(); int i =1; } }

    インラインコンストラクタ

    インラインコンストラクターは、コンストラクターの 1 つが別のコンストラクターの特殊なケースである場合に、コンストラクターのチェーンを圧縮することを許可します。

    public class Class { public int varInt; public Class() { this(0); } public Class(int i) { varInt=i; } public void method() { Class aClass=new Class(); } }
    public class Class { public int varInt; public Class(int i) { varInt=i; } public void method() { Class aClass=new Class(0); } }

    インラインスーパークラス

    インラインスーパークラスリファクタリングにより、スーパークラスのメソッドが使用されているクラスにプッシュされ、スーパークラスが削除されます。

    public class Bar { ... int calculations1() { ... } int calculations2() { ... } } class Foo extends Bar { int someMethod() { ... if (something > calculations1()) { ... return calculations2(); } ... } }
    public class Bar { ... int calculations1() { ... } int calculations2() { ... } } class Foo extends Bar { int someMethod() { ... if (something > calculations1()) { ... return calculations2(); } ... } }

    匿名クラスにインライン化

    匿名クラスにインライン化リファクタリングでは、冗長なクラスをその内容に置き換えることができます。 Java 8 以降では、インライン化された匿名クラスをラムダ式に自動的に変換できます。

    import java.util.*; public class Main { public class MyComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { return 0; } } void sort(List<String> scores) { scores.sort(new MyComparator()); } }
    import java.util.*; public class Main { void sort(List<String> scores) { scores.sort((s1, s2) -> 0); } }

    パラメーターのインライン化

    パラメーターのインライン化リファクタリングを使用すると、パラメーターの使用箇所をメソッド呼び出しの引数の値に置き換えることができます。

    public class HelloWorld { public static void main(String[] args) { int score = getScore(5); System.out.println("Score: " + score); } public static int getScore(int base) { return base * 10; } }
    public class HelloWorld { public static void main(String[] args) { int score = getScore(); System.out.println("Score: " + score); } public static int getScore() { return 5 * 10; } }
    2026 年 3 月 30 日