更新时间:2024-04-12 GMT+08:00
提取委托
此重构允许您基于现有类的成员选定来创建新类。
执行重构
- 在代码编辑器中,将光标放置在要将其成员提取到新类的类中的任何位置。
- 在主菜单或编辑器上下文菜单中,选择Refactor>Extract Delegate。
- 在打开的Extract Delegate对话框中,提供重构参数。
- 提供提取类的名称、包和目标目录。
- 选中Create nested class复选框以在当前类中创建新类。
- 选中Generate accessors复选框,为提取的字段生成getter方法。
- 选中Extract as enum复选框,将提取的类创建为枚举类。如果源类包含静态最终字段static final fields,这是可能的。
- 在 Members to Extract区域中,选择要提取的类成员。如果选择了Extract as enum,则还可以选择要作为枚举常量提取的字段旁边的As Enum复选框。
- 在Visibility选项中,选择要应用于提取的类成员的可见性修改器。要自动应用所需的可见性修改器,以便访问类成员,请选择Escalate选项。
- 单击Refactor以应用重构。
示例
作为一个例子,让我们将ExtractDelegate类中的print方法提取到一个嵌套的Printer枚举类中。
重构前
class ExtractDelegate { public static void main(String[] args) { new ExtractDelegate().print(); } private static final String message = "Hello World!"; private void print() { System.out.println(message); } }
重构后
class ExtractDelegate { private final Printer printer = new Printer(); public static void main(String[] args) { new ExtractDelegate().print(); } private void print() { printer.print(); } public enum Printer { message("Hello World!"); private String value; public String getValue() { return value; } Printer(String value) { this.value = value; } private void print() { System.out.println(message.getValue()); } } }
父主题: 提取/引入重构