3
我有一個抽象基類,我想刪除一個抽象方法。我想介紹一個新的接口與該方法,並使所有現有的子類來實現該接口,而不是擴展基類。用IntelliJ中的接口替換抽象基類
來源:
public abstract class Base {
public abstract Foo getFoo();
}
public class Concrete extends Base {
public Foo getFoo() {
throw new UnsupportedOperationException();
}
}
要:
public interface Base {
Foo getFoo();
}
public class Concrete implements Base {
public Foo getFoo() {
throw new UnsupportedOperationException();
}
}
我試圖內聯基類沒有成功,手工創建的接口,拉扯構件,然後刪除,然後空基類,但我似乎無法讓IntelliJ自動完成此操作。
關於如何解決這個問題的任何建議?
嗯,你提到了一些你願意採取的手動步驟,但是你希望最後一步是自動的?你能否提出更具體的要求?我的意思是,你已經嘗試過「提取界面」,對吧?我知道這不會自動將抽象類更改爲Base。 – 2013-02-12 08:11:29
intellij *可能*不能完全滿足你要求的原因是它不知道如何處理'Base'中的已實施方法。如果Base成爲一個接口,它將不再編譯,因爲實現的方法將不得不去某處。 – 2013-02-12 08:12:40
理想情況下,我不想做任何手動步驟,我只是試着將其作爲解決方法。我確實嘗試使用提取界面。隨後的對話似乎提供了我想要的; Idea提供嘗試用接口替換現有基類的使用,但由於未知原因它不能改變它們中的任何一個。基地沒有實施的方法,除了這個我想拉起來的抽象的單一的方法。 – Kristoffer 2013-02-12 09:29:56