你知道怎么用Idea将方法移到另一个类中吗?
1、来个脚手架的代码:
package chapter4;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by MyWorld on 2016/3/21.
*/
public class RefactorOperate {
public static void main(String[] args) {
List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));
StringUtils utils=new StringUtils();
print(seasonList); seasonList.add("Spring Rain");
seasonList.add("vernal equinox");
System.out.println("======================");
print(seasonList);
} private static void print(List<String> seasonList) {
for (String season : seasonList) {
System.out.println(season);
}
}
}
package chapter4;/**
* Created by MyWorld on 2016/3/22.
*/
public class StringUtils {
}


2、动手了!
把目标Class的实例作为入参,写到print的的第二个参数的位置,
此时IDEA会提示编译不过。
肯定不过,因为print以前只有一个入参嘛
将光标放在报错代码的任一位置,按“Alt + Enter”快捷键,
在弹出的菜单中选 第一项
“Add 'StringUtils' as 2nd parameter to method 'print'”
然后回车(直接用鼠标点击也可以的)

3、在弹出的“Change Signature”对话框中可以看到,
方法print()新增了一个StringUtils类型的参数“utils”
与预期的结果一致,我们点“Refactor”

4、看看给print增加StringUtils类型的参数后的代码
Code:
package chapter4;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by MyWorld on 2016/3/21.
*/
public class RefactorOperate {
public static void main(String[] args) {
List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));
StringUtils utils=new StringUtils();
print(seasonList,utils); seasonList.add("Spring Rain");
seasonList.add("vernal equinox");
System.out.println("======================");
print(seasonList, utils);
} private static void print(List<String> seasonList, StringUtils utils) {
for (String season : seasonList) {
System.out.println(season);
}
}
}

5、到关键的一步了
将光标放在print方法块中任意位置,然后按F6键,
在弹出的“Move Members”对话框中,
"Move members from:"就是我们当前操作的
“To (fully qualified name):”下面的文本框是目标class的全路径
可以看到print方法已经勾选了

6、点击“To (fully qualified name)”下面文本框右端的“...”按钮
弹出“Choose Destinationg Class”对话框
在“Search by Name”Tab页中的搜索框中输入“StringU”
下面已经要移动到的目标Class显示出来了,
在目标Class的文本中双击即可选中这个class

7、回来“Move Member”对话框
点“Refactor”

8、看看操作的结果
RefactorOperate.java中已经没有print方法了


9、在StringUtils class中,在utils变量上按Alt+Enter键,
在弹出的菜单中选中“Remove Parameter 'utils'”
然后回车
按上面的操作把RefactorOperate.java中的main中的utils变量remove
至此
OK了


10、看看最后的代码
Code:
package chapter4;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by MyWorld on 2016/3/21.
*/
public class RefactorOperate {
public static void main(String[] args) {
List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));
StringUtils.print(seasonList); seasonList.add("Spring Rain");
seasonList.add("vernal equinox");
System.out.println("======================");
StringUtils.print(seasonList);
}
}
package chapter4;import java.util.List;
/**
* Created by MyWorld on 2016/3/22.
*/
public class StringUtils {
public static void print(List<String> seasonList) {
for (String season : seasonList) {
System.out.println(season);
}
}
}

