如何在 Intellij 中重构 - 参数为 class 且字段为 class 的方法
How to refactor in Intellij - method with parameters to class with fields
给定一个方法
public class SomeClass{
public void methodName (Param1 param1, Param2 param2, Param3 param){
...
}
}
称为
SomeClass someObject = new SomeClass();
someObject.methodName(x, y, z);
在 IntelliJ 中将 someObject.methodName(x, y, z);
重构为
的最快方法是什么
public class MethodNameHandler{
private Param1 param1;
private Param2 param2;
private Param3 param3;
public MethodNameHandler(Param1 param1, Param2 param2, Param3 param3){
this.param1 = param1;
this.param2 = param2;
this.param3 = param3;
}
public void methodName(){
...
}
}
称为
new MethodNamehandler(x, y, z).methodName();
在 IntelliJ 14.1.4 和 15.0 中:
第 1 步:
在方法声明上放置一个插入符号,按 ctrl + alt + shift + t
(或 cmd
而不是 ctrl
,如果在 Mac 上)和 select 7. Parameter Object...
.为新的 class 输入名称(我使用 Holder
),然后按 Refactor
。
弹出窗口会询问您 Holder
的默认值,留下 Leave blank
以便编译器会在出现任何问题时告诉您。在这种情况下,不需要默认值,因此应该在没有任何编译器错误的情况下正确重构。
第 2 步:
再次在已编辑的方法上放置一个插入符号,ctrl/cmd + alt + shift + t
、select 4. Move...
。 Holder
class 应该可用并且 selected。按 Refactor
.
第 3 步:
最后,在您的 Holder
class 内联 getter 中生成第一步。在 getter 声明上放置一个插入符号,然后按 ctrl/cmd + alt + n
。不幸的是,必须为每个人单独完成。
给定一个方法
public class SomeClass{
public void methodName (Param1 param1, Param2 param2, Param3 param){
...
}
}
称为
SomeClass someObject = new SomeClass();
someObject.methodName(x, y, z);
在 IntelliJ 中将 someObject.methodName(x, y, z);
重构为
public class MethodNameHandler{
private Param1 param1;
private Param2 param2;
private Param3 param3;
public MethodNameHandler(Param1 param1, Param2 param2, Param3 param3){
this.param1 = param1;
this.param2 = param2;
this.param3 = param3;
}
public void methodName(){
...
}
}
称为
new MethodNamehandler(x, y, z).methodName();
在 IntelliJ 14.1.4 和 15.0 中:
第 1 步:
在方法声明上放置一个插入符号,按 ctrl + alt + shift + t
(或 cmd
而不是 ctrl
,如果在 Mac 上)和 select 7. Parameter Object...
.为新的 class 输入名称(我使用 Holder
),然后按 Refactor
。
弹出窗口会询问您 Holder
的默认值,留下 Leave blank
以便编译器会在出现任何问题时告诉您。在这种情况下,不需要默认值,因此应该在没有任何编译器错误的情况下正确重构。
第 2 步:
再次在已编辑的方法上放置一个插入符号,ctrl/cmd + alt + shift + t
、select 4. Move...
。 Holder
class 应该可用并且 selected。按 Refactor
.
第 3 步:
最后,在您的 Holder
class 内联 getter 中生成第一步。在 getter 声明上放置一个插入符号,然后按 ctrl/cmd + alt + n
。不幸的是,必须为每个人单独完成。