IntelliJ IDEA 2025.2 Help

内联

内联重构允许您对方法、构造函数、参数、超类、匿名类和闭包(适用于 Swift)执行反向重构 提取

从 Java 14 版本起,您可以内联 pattern variable。 在这种情况下,所有的出现都将被替换为 old-style cast expression。

  1. 将文本光标放在您要内联的代码片段处。

  2. 按下 Ctrl+Alt+N。 或者,右键点击代码片段,并从 重构 菜单中选择您需要的内联重构。

  3. 内联 对话框中,指定内联选项。

  4. (可选)选择 预览 以预览更改。

  5. 预览并应用更改。

    示例

    Inline Variable

    内联变量重构用其初始化器替换冗余变量的使用。

    示例 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; }

    Inline Method

    内联方法会将该方法的主体插入其调用者的主体中。

    示例 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; }

    内联抽象方法

    将具有唯一实现的抽象方法执行内联,会用具体实现的代码替代对该方法的调用,并移除该方法的声明及其调用。

    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; } }

    内联构造函数

    内联构造函数允许压缩构造函数链,如果其中一个构造函数是另一个的特例。

    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 开始,被内联的匿名类可以自动转换为 Lambda 表达式。 从 Java 8 开始,内联匿名类可以自动转换为 lambda。

    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); } }

    Inline Parameter

    内联参数重构允许您将参数的用法替换为方法调用参数的值。

    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; } }
    最后修改日期: 2025年 9月 22日