簡體   English   中英

將靜態方法重構為Eclipse中的實例方法

[英]Refactoring static methods into instance methods in Eclipse

我怎么能重構

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

class Bar {
    void foo();
}

用Eclipse? IOW將靜態方法轉換為其中一個參數的實例方法。

刪除“static”關鍵字,然后執行“Move Method”重構。 它應該提供“Bar”作為目標類。

(對我來說,Eclipse只對非靜態方法執行此操作似乎很瘋狂,但這就是它的工作方式。對我來說似乎是一個錯誤。也許我應該為修復它做出貢獻,而不僅僅是抱怨它! ;-)

我不相信有一種完全自動化的方法,但我要做的是讓Plugh.foo()的主體調用bar.foo() ,然后使用Quick Fix(control-1)創建Bar.foo() ,然后將Plugh.foo()的主體(其余部分)剪切並粘貼到Bar.foo()

然后內聯所有對Plugh.foo()調用,並在Bar.foo()進行初始賦值: Bar bar = this; ,然后內聯本地(並可能清理方法中的所有this. )。

  1. 將您的代碼更改為:

     class Plugh { static void foo(Bar bar) { bar.foo(); } } 
  2. 然后inline方法Plugh.foo(...)
    Plugh.foo(...)所有調用都將被barInstance.foo();替換barInstance.foo();
    barInstance可以在調用代碼中調用任何內容。 它將被正確替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM