1、来个脚手架的代码:package chapter4;import java.util.ArrayList;i罪焐芡拂mport 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.uti盟敢势袂l.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); } }}