2015-12-30 51 views
3

我正在開發一個Android框架(https://www.github.com/IanSwift/jumper),它需要數據模型類並使用反射來更新創建或更新時的視圖。我爲此使用了一個動態代理工廠,並且我現在有用戶輸入了真實對象和一個指定任何狀態改變方法的接口。我的問題是,有沒有一種方法的代碼可以自動生成從類的接口?它看起來像這樣。派生自類的Java接口?

Class<?> derivedInterface = somehowGetAnInterface(Original.class) 

凡原來是一個實例是這樣的:

public class Original { 
    String someData; 

    public void setSomeData(String s) { 
     someData = s; 
    } 

    public String getSomeData() { 
     return someData(); 
    } 
} 

而派生的接口被在編譯時產生兩種或運行時間,但看起來是這樣的:

public interface OriginalInterface { 
    public void setSomeData(String s); 
    public String getSomeData(); 
} 
+2

您可以使用反射來構建這樣的事物,但原始類和提供的實例不會實現您的新接口。 –

+0

你如何對它進行刺探並回到你遇到的任何具體問題?這真的更符合本網站的精神。 –

+1

你可以明顯地在編譯時創建一個接口,通過使用註釋處理器,甚至可能使用戶的類實現它,但看起來像是一種矯枉過正。無論如何,我認爲你正在解決錯誤的問題。爲什麼你首先需要這個接口?你能用AOP達到相同的結果嗎? – user3707125

回答

-3

Eclipse可以做這個。選擇類名稱,右鍵單擊並選擇Refactor,然後選擇Extract Interface。在出現的對話框中,爲接口提供一個名稱並選擇要提取的方法。 順便說一下,當我自己嘗試這個時,我發現你的發佈代碼中有一個錯誤:getSomeData()中對someData的引用應該是一個字段,而不是一個方法。