将内部类或实例转换为静态
通过此重构,可以将内部类转换为嵌套的静态类,或将实例方法转换为静态方法。
执行重构
- 在代码编辑器中,将光标放在要转换为静态的类或方法的声明上。
- 单击右键展示上下文菜单,选择 。
- 在打开的“将Class设为静态”对话框中,提供重构参数。
- 如果类或方法包含对外部类字段的引用,则可以将被引用的对象作为参数传递给类构造函数,或者将被引用的字段作为方法的参数传递给类构造函数。如下图所示:
图1 将Class设为静态
- 否则,如果类或方法不包含对外部类字段的引用,则可以用类引用替换实例限定符。如下图所示:
图2 将Class设为静态
- 如果类或方法包含对外部类字段的引用,则可以将被引用的对象作为参数传递给类构造函数,或者将被引用的字段作为方法的参数传递给类构造函数。如下图所示:
- 单击“重构”以应用重构。
示例
作为一个例子,将Inner内部类转换为嵌套的静态类。由于Inner类包含对Outer类的message字段的引用,可以将Outer对象和message字段作为Inner类构造函数的参数添加进去。
重构前
“com\refactoring\source\Outer.java”文件内容如下:
class Outer { public String message; public static void main(String[] args) { } class Inner{ public void print() { System.out.println(message); } } }
重构后
“com\refactoring\source\Outer.java”文件内容如下:
class Outer { public String message; public static void main(String[] args) { } static class Inner { private String message; public Inner( String message) { this.message = message; } public void print() { System.out.println(message); } } }