0

如果我从这样的方法开始:

package com.sandbox;

import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<String> strings = new ArrayList<String>();
        strings.add("a");
        strings.add("b");

        for (String string : strings) {
            System.out.println(string);
        }
    }
}

如果我突出显示第一add(...)行然后提取方法,代码变成这样:

package com.sandbox;

import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<String> strings = new ArrayList<String>();
        addA(strings);
        strings.add("b");

        for (String string : strings) {
            System.out.println(string);
        }
    }

    private static void addA(List<String> strings) {
        strings.add("a");
    }
}

我几乎从不想要这个。我宁愿它做这样的事情:

package com.sandbox;

import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<String> strings = new ArrayList<String>();
        strings.addAll(addA());
        strings.add("b");

        for (String string : strings) {
            System.out.println(string);
        }
    }

    private static List<String> addA() {
        List<String> strings = new ArrayList<String>();
        strings.add("a");
        return strings;
    }
}

或者可能是这样的:

package com.sandbox;

import java.util.ArrayList;
import java.util.List;

public class Sandbox {

    public static void main(String[] args) {
        List<String> strings = addA();        
        strings.add("b");

        for (String string : strings) {
            System.out.println(string);
        }
    }

    private static List<String> addA() {
        List<String> strings = new ArrayList<String>();
        strings.add("a");
        return strings;
    }
}

有没有办法以这种方式制作 intellij 提取方法?

4

1 回答 1

2

您可以通过选择方法的前两行(包括新的 ArrayList 调用)来获得第二个结果。

于 2013-01-17T21:12:06.330 回答