移动实例方法
如果方法在项目中具有类型参数,则此重构允许将实例(非静态)方法移动到其他类。
执行重构
- 在代码编辑器中,将光标放在要移动到另一个类的实例方法的声明上。
- 在单击右键展示上下文菜单,选择 。
- 在打开的“移动实例方法”对话框中,提供重构选项。
- 在“选择一个实例表达式”列表中,选择要将实例方法移动到的目标类。潜在移动目标的列表包括当前类中的方法参数的类和字段的类。
- 为将要移动的方法添加参数名称,并将替换对当前类所有参数的引用。
- 在“可见性”区域中,指定移动方法的可见性修改器,或选择“升级” 以自动将可见性设置为所需的级别。
如下图所示:
图1 移动示例方法
- 单击“重构”以应用重构。
示例
例如,将实例方法getName从Car类移动到MoveInstanceMethod类方法。
重构前
“com\refactoring\source\MoveInstanceMethod.java”文件内容如下:
public class MoveInstanceMethod { public static void main(String[] args) throws Exception { Car c = new Car(); System.out.println(c.getName(new MoveInstanceMethod())); } } class Car { String name = "Default Car"; String getName(MoveInstanceMethod anotherObject) { System.out.print(anotherObject.toString()); return this.name; } }
重构后
“com\refactoring\source\MoveInstanceMethod.java”文件的类“Car”将实例方法移动到“MoveInstanceMethod”类中,文件内容如下:
public class MoveInstanceMethod { public static void main(String[] args) throws Exception { Car c = new Car(); System.out.println(new MoveInstanceMethod().getName(c)); } String getName(Car car) { System.out.print(toString()); return car.name; } } class Car { String name = "Default Car"; }