IntelliJ IDEA內聯(lián)

2018-11-07 13:44 更新

IntelliJ IDEA 提供了以下的內聯(lián)重構:

  • 內聯(lián)變量重構用其初始值設定項替換冗余變量用法。此重構與提取變量重構相對應。變量必須在聲明中初始化。如果在代碼中的某個地方修改了初始值, 則只有在修改之前的實例才會被內聯(lián)。
  • 內聯(lián)方法重構導致將方法的主體放入其調用者的主體中。您可以選擇:內聯(lián)所有出現(xiàn)的方法,并刪除該方法內聯(lián)只發(fā)生一次,并保留該方法。此重構與提取方法相對應。
  • 內聯(lián)到匿名類重構允許將冗余類替換為其內容。從 Java8 開始,內聯(lián)的匿名類可以自動轉換為 lambda 表達式。
  • 內聯(lián)構造函數(shù)允許壓縮一個構造函數(shù)鏈,如果其中一個是另一個的特例情況。
  • 內聯(lián) JSP/JSPX 像常規(guī)的 Java 內聯(lián)重構一樣工作。
  • 內聯(lián)超類重構導致將超類的方法推送到它們所在的類中,并刪除超類。

內聯(lián)示例

    內聯(lián)變量

    示例-1:

    內聯(lián)變量前:

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

    內聯(lián)變量后:

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

    示例-2

    內聯(lián)變量前:

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

    內聯(lián)變量后:

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

    內聯(lián)方法

    示例-1

    內聯(lián)方法前:

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

    內聯(lián)方法后:

    public void method() {
        int c= a + b;
        int d= a + c;
    }

    示例-2

    內聯(lián)方法前:

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

    內聯(lián)方法后:

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

    內聯(lián)構造函數(shù)

    內聯(lián)構造函數(shù)前:

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

    內聯(lián)構造函數(shù)后:

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

    內聯(lián)超類

    內聯(lián)超類前:

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

    內聯(lián)超類后:

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

    內聯(lián)到匿名類

    內聯(lián)到匿名類前:

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

    內聯(lián)到匿名類前:

    import java.util.*;
    
    public class Main {
    
        void sort(List<String> scores) {
            scores.sort((s1, s2) -> 0);
        }
    }

    執(zhí)行內聯(lián)重構

    1. 將插入符號放置在編輯器中的所需符號內聯(lián)。
    2. 執(zhí)行下列操作之一:
      • 在主菜單或上下文菜單上,選擇:重構| 內聯(lián)。
      • 按 Ctrl+Alt+N。
    3. 在與所選符號對應的內聯(lián)對話框中指定內聯(lián)選項。
    4. 預覽并應用更改。
    以上內容是否對您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號
    微信公眾號

    編程獅公眾號