Java Eclipse中的方法重构
我尝试在EclipseIDE(JDT)中执行以下重构步骤,但找不到所需的重构,也记不起所有步骤的名称。我在上检查了重构,但没有找到正确的重构 让我们以以下场景为例:Java Eclipse中的方法重构,java,eclipse,ide,refactoring,eclipse-jdt,Java,Eclipse,Ide,Refactoring,Eclipse Jdt,我尝试在EclipseIDE(JDT)中执行以下重构步骤,但找不到所需的重构,也记不起所有步骤的名称。我在上检查了重构,但没有找到正确的重构 让我们以以下场景为例: A类{ 方法(B){ doSomethingWithA(); b、 doSomethingWithB(); } [...] } B类{ [...] } 1) 使方法成为静态的(缺少重构的名称?): A类{ 静态法(A、B){ a、 doSomethingWithA(); b、 doSomethingWithB(); } [...
A类{
方法(B){
doSomethingWithA();
b、 doSomethingWithB();
}
[...]
}
B类{
[...]
}
1) 使方法成为静态的(缺少重构的名称?):
A类{
静态法(A、B){
a、 doSomethingWithA();
b、 doSomethingWithB();
}
[...]
}
B类{
[...]
}
2) 移动方法:
A类{
[...]
}
B类{
静态法(A、B){
a、 doSomethingWithA();
b、 doSomethingWithB();
}
[...]
}
3) 转换为实例方法:
A类{
[...]
}
B类{
方法(A){
a、 doSomethingWithA();
doSomethingWithB();
}
[...]
}
因此,任何知道如何在Eclipse中一步一步地完成这项工作或知道重构名称的人都是受欢迎的。我们的目标是让IDE支持每一步。不幸的是,Eclipse的重构功能并不像其他IDE(例如Jetbrains')那样完整。我将介绍如何使用IntelliJ和Eclipse执行您请求的每个重构 使用IntelliJ
使用Eclipse时
public static void method(A a, B b) {
a.method(b);
}
public void method(B b){
doSomethingWithA();
b.doSomethingWithB();
}
public static void method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
1.2
结果
public static void method(A a, B b) {
a.method(b);
}
public void method(B b){
doSomethingWithA();
b.doSomethingWithB();
}
public static void method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
在了解了重构被称为“Convert to Instance Method”之后,我搜索了Eclipse JDT的bug数据库,发现了坏消息: 因此,基本上这是一个不会修复noone Care特性的请求,所以我可能也该切换到IntelliJ了。我得好好考虑一下 Emond Papegaij在讨论Bug 118032时提出了一个解决方案: 一个简单的解决方法是创建静态方法,从要变为静态的方法调用此静态方法,并内联方法调用。这在4.3.1中对我有效
这很有趣,但也不是一个自动的重构,而且从一开始就违背了重构的目的。添加某人自己的代码会带来失败的可能性,并且需要重新运行测试套件,从而不可能安全地重构遗留代码。正是按照我所希望的方式工作的。提示一下,最终产品将有一个额外的参数,可以通过
Refactor->Change Method Signature