IntelliJ IDEA內(nèi)聯(lián)

2018-11-07 13:44 更新

IntelliJ IDEA 提供了以下的內(nèi)聯(lián)重構(gòu):

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

內(nèi)聯(lián)示例

    內(nèi)聯(lián)變量

    示例-1:

    內(nèi)聯(lián)變量前:

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

    內(nèi)聯(lián)變量后:

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

    示例-2

    內(nèi)聯(lián)變量前:

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

    內(nèi)聯(lián)變量后:

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

    內(nèi)聯(lián)方法

    示例-1

    內(nèi)聯(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;
    }

    內(nèi)聯(lián)方法后:

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

    示例-2

    內(nèi)聯(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;
    }

    內(nèi)聯(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;
    }

    內(nèi)聯(lián)構(gòu)造函數(shù)

    內(nèi)聯(lián)構(gòu)造函數(shù)前:

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

    內(nèi)聯(lián)構(gòu)造函數(shù)后:

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

    內(nèi)聯(lián)超類

    內(nèi)聯(lián)超類前:

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

    內(nèi)聯(lián)超類后:

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

    內(nèi)聯(lián)到匿名類

    內(nèi)聯(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());
        }
    }

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

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

    執(zhí)行內(nèi)聯(lián)重構(gòu)

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

    掃描二維碼

    下載編程獅App

    公眾號(hào)
    微信公眾號(hào)

    編程獅公眾號(hào)