mra*_*ers 23 refactoring intellij-idea
我希望能够在IntelliJ IDEA中将实例方法从一个类移动到另一个类(来自Fowler的"重构"中的"Move方法").不幸的是,当我尝试"Move ..."(cmd:F6)时,它告诉我"没有方法有引用类型.你想让方法静态然后移动吗?" 我不想让我的方法静态,我希望它是另一个类的实例方法.
我的代码示例:
public class TheClass {
public void doStuff(){
int i = themethod();
}
private int theMethod() {
System.out.println( "Hello World!" );
return 0;
}
}
public class OtherClass {
}
Run Code Online (Sandbox Code Playgroud)
说我想移动theMethod从TheClass到OtherClass.在IDEA中是否有自动重构,如果是这样的话:我该如何应用它?
Maa*_*ten 27
在IntelliJ 14-15中,执行以下操作:
你最终会得到:
public class TheClass {
public void doStuff() {
int i = new TheOtherClass().theMethod();
}
}
public class TheOtherClass {
int theMethod() {
System.out.println("Hello World!");
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
在intellij 13.1中(不知道在之前的版本中)它可以用
选择Refactor | 提取| 在主菜单上委派
但显然有一个"奇怪的"限制:它只能通过一个新创建的类来完成.因此,您必须在不创建"OtherClass"的情况下应用此重构(它将在您应用重构时直接创建).
因此,对于alredy创建的类的方法的真正"移动"似乎缺失,非常奇怪的行为
IDEA中的Move方法重构仅考虑将方法移动到与其相关的类中,即用作其参数或返回值,或从方法内部调用.这有点合乎逻辑:如果方法与目标类没有任何关系,为什么它应该存在呢?OTOH我在某些情况下发现了这种限制,我仍然有理由移动该方法.所以我不得不手工完成.
| 归档时间: |
|
| 查看次数: |
13766 次 |
| 最近记录: |