codecamp

IntelliJ IDEA内联

IntelliJ IDEA 提供了以下的内联重构:

  • 内联变量重构用其初始值设定项替换冗余变量用法。此重构与提取变量重构相对应。变量必须在声明中初始化。如果在代码中的某个地方修改了初始值, 则只有在修改之前的实例才会被内联。
  • 内联方法重构导致将方法的主体放入其调用者的主体中。您可以选择:内联所有出现的方法,并删除该方法内联只发生一次,并保留该方法。此重构与提取方法相对应。
  • 内联到匿名类重构允许将冗余类替换为其内容。从 Java8 开始,内联的匿名类可以自动转换为 lambda 表达式。
  • 内联构造函数允许压缩一个构造函数链,如果其中一个是另一个的特例情况。
  • 内联 JSP/JSPX 像常规的 Java 内联重构一样工作。
  • 内联超类重构导致将超类的方法推送到它们所在的类中,并删除超类。

内联示例

    内联变量

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

    内联构造函数

    内联构造函数前:

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

    内联超类后:

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

    内联到匿名类

    内联到匿名类前:

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

    执行内联重构

    1. 将插入符号放置在编辑器中的所需符号内联。
    2. 执行下列操作之一:
      • 在主菜单或上下文菜单上,选择:重构| 内联。
      • 按 Ctrl+Alt+N。
    3. 在与所选符号对应的内联对话框中指定内联选项。
    4. 预览并应用更改。
    Generify重构
    IntelliJ IDEA将布尔值取反
    温馨提示
    下载编程狮App,免费阅读超1000+编程语言教程
    取消
    确定
    目录

    IntelliJ IDEA的一般准则

    什么是IntelliJ IDEA项目

    使用IntelliJ IDEA的意图行为

    IntelliJ IDEA使用运行/调试配置

    特定于VCS的程序

    IntelliJ IDEA语言和特定框架指南

    IntelliJ IDEA的数据库和SQL功能

    IntelliJ IDEA使用之JavaServer Faces(JSF)

    IntelliJ IDEA:分析PHP应用程序的性能

    IntelliJ IDEA:调试PHP应用程序

    IntelliJ IDEA:适用于PHP的Google App Engine

    IntelliJ IDEA更多内容

    关闭

    MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }