2012-07-10 47 views
3

我有一個如何在許多類實現後正確地更改接口? java的

public interface DoIt { 
    void dosomething (int i, double x); 
    int dosomethingelse (String s); 
} 

一些類實現它是class_of_a等... ,我想在界面中添加了新的方法,可以說diditwork(int x); 我怎麼想這樣做,同時避免重新編譯的問題或可能出現的任何問題?什麼是新的等級?

+3

這個新方法應該由現有的類來實現嗎?如果沒有,那麼添加界面就沒有意義了。如果需要,那麼我們不能避免重新編譯實現的類。 – kosa 2012-07-10 14:24:55

+0

用'SortedSet'和'NavigableSet'查看JDK的先例......這不會是一種很好的解決方法。 ;) – 2012-07-10 14:58:32

回答

7

創建一個新的接口和擴展舊的接口,是這樣的:

interface DoIt2 extends DoIt 
{ 
    // void doSomething(int i, double x); 
    // int doSomethingelse(String s); 
    void didItWork(int x); 
} 
+3

爲什麼你需要DoIt2中的前兩種方法? – Razvan 2012-07-10 14:28:04

+0

如果DoIt2延伸DoIt爲什麼你會在那裏DoIt的方法? – 2012-07-10 14:29:04

+0

@Razvan你是對的:) – 2012-07-10 14:29:36

-1

創建另一個界面,讓給定類實現這兩個接口

例如

public interface DoIt { 
    void dosomething(int i, double x); 
    int dosomethingelse(String s); 
} 

和新的界面

public interface CheckIt { 
    boolean diditwork(int x); 
} 

類沒有必要檢查將實施只有大一接口,具有必要性類檢查也將實現CheckIt接口

2

可以擴展現有的這樣的接口:

interface DoItMore extends DoIt { diditwork(int x); } 

所以你會有你的舊inte用於低級別的類和用於高級別的新接口。然後,您必須更改高級課程中使用的接口。