我如何重构
class Plugh {
static void foo(Bar bar);
}
到
class Bar {
void foo();
}
使用Eclipse? IOW将静态方法转换为其中一个参数的实例方法。
答案 0 :(得分:9)
删除“static”关键字,然后执行“Move Method”重构。它应该提供“Bar”作为目标类。
(对我来说,Eclipse只对非静态方法做这件事似乎很疯狂,但这就是它的工作方式。对我来说似乎是一个错误。也许我应该做出贡献来修复它,而不仅仅是抱怨关于它!; - )
答案 1 :(得分:4)
我不相信有一种完全自动化的方法可以做到这一点,但我要做的是使Plugh.foo()
的主体调用bar.foo()
,然后使用快速修复(control-1)来创建Bar.foo()
,然后剪切&将Plugh.foo()
的正文(其余部分)粘贴到Bar.foo()
。
然后内联所有对Plugh.foo()
的调用,并在Bar.foo()
Bar bar = this;
内进行初始分配,然后内联本地(并可能清理所有this.
的内容在方法中)。
答案 2 :(得分:0)
将您的代码更改为:
class Plugh {
static void foo(Bar bar) { bar.foo(); }
}
然后inline
方法Plugh.foo(...)
Plugh.foo(...)
的所有来电都将被barInstance.foo();
取代
barInstance
可以在调用代码中调用任何内容。它将被正确替换。