将静态方法重构为Eclipse中的实例方法

时间:2010-12-24 18:59:35

标签: java eclipse refactoring

我如何重构

class Plugh {
    static void foo(Bar bar);
}

class Bar {
    void foo();
}

使用Eclipse? IOW将静态方法转换为其中一个参数的实例方法。

3 个答案:

答案 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)

  1. 将您的代码更改为:

    class Plugh {
        static void foo(Bar bar) { bar.foo(); }
    }
    
  2. 然后inline方法Plugh.foo(...) Plugh.foo(...)的所有来电都将被barInstance.foo();取代 barInstance可以在调用代码中调用任何内容。它将被正确替换。