将匿名类转换为内部类
此重构允许将匿名类转换为重命名的内部类。
执行重构
- 在编辑器中,将光标放置在要转换为内部类的匿名类表达式中的任何位置。
- 单击右键展示上下文菜单,选择。
- 在打开的“转换匿名类为内部类”对话框中,提供重构参数。
- 提供内部类的名称并选择是否将其创建为静态类。
- 在“构造函数参数”区域中,提供要用作类构造函数参数的变量的名称。使用工具栏按钮对参数重新排序。
如下图所示:
图1 转换匿名类为内部类
- 单击“重构”以应用重构。
示例
例如,将用作方法返回值的匿名类表达式转换为内部静态类MyTestClass。
重构前
“com\refactoring\source\AnonymousToInner.java”文件内容如下:
class AnonymousToInner {
public TestClass method() {
final int i = 0;
final String str = "string";
return new TestClass() {
public String str () {
return str;
}
public int publicMethod() {
return i;
}
};
}
}
同时,在“com\refactoring\source\TestClass.java”文件中定义“TestClass”类,文件内容如下:
package com.refactoring.source;
public class TestClass {
}
重构后
“com\refactoring\source\TestClass.java”文件中定义“TestClass”类内容不变,“com\refactoring\source\AnonymousToInner.java”文件内容如下:
class AnonymousToInner {
public TestClass method() {
final int i = 0;
final String str = "string";
return new MyTestClass(str, i);
}
private static class MyTestClass extends TestClass {
private final String str;
private final int i;
public MyTestClass(String str, int i) {
this.str = str;
this.i = i;
}
public String str () {
return str;
}
public int publicMethod() {
return i;
}
}
}