[英]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.
)。
將您的代碼更改為:
class Plugh { static void foo(Bar bar) { bar.foo(); } }
然后inline
方法Plugh.foo(...)
。
Plugh.foo(...)
所有調用都將被barInstance.foo();
替換barInstance.foo();
。
barInstance
可以在調用代碼中調用任何內容。 它將被正確替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.