2013-02-22 104 views
0

您好,我正在研究一些有趣的代碼,並且思想已經跨越了我的想法。如何實現通用接口列表

下面是一些簡單的代碼:

public interface SomeInterFace<T> 
{ 
    public List<T> doSomething(); 
} 

現在,我應該延長例如

public interface OtherInterface extends SomeInterface<Integer>, 
SomeInterFace<String>, SomeInterface<Number>, ... 

各種對象這一個別的接口有一個方法可行寫這個「OtherInterface」以某種方式實現具有對象列表的「SomeInterface」?

+1

不幸的是,這對於java泛型是不可能的。不能讓具有相同名稱的多個方法使用不同的參數返回相同的泛型類型。這是由於在java中如何處理泛型。 – jtahlborn 2013-02-22 18:08:08

+0

剛剛公共接口OtherInterface擴展SomeInterface ''? – PermGenError 2013-02-22 18:08:55

+0

@PremGenError不認爲這是可編譯的,我不知道它是否有一些小的變化 – ZeDonDino 2013-02-22 18:10:25

回答

4

如果你能處理任何類型參數的類型爲OtherInterface,那麼作爲其他人所說,你可以寫:

public interface OtherInterface<T> extends SomeInterface<T> 

然而,如果你需要實現SomeInterface僅供類型的特定列表參數(例如,StringNumber),那麼你不能這樣做。在編譯時,SomeInterface<(anything)>只是由於type erasure而變爲SomeInterface,並且在編譯器確定您沒有嘗試執行任何不安全的強制轉換(或者您已經告訴它不檢查)後爲您插入強制轉換。因此,你會嘗試寫看起來是這樣的一類:

public interface OtherInterface extends SomeInterface, SomeInterface { 
    public List doSomething(); 
    public List doSomething(); 
} 

...這是無效的原因是顯而易見的!

希望有幫助!

+1

打我吧... +1 – 2013-02-22 18:14:31

+0

哈。我想中西部地區最快的鍵盤。 :) – 2013-02-22 18:15:51

+0

如果你看看我的問題,你的答案根本無法幫助我,因爲我說過:「你的權利,但這意味着如果你實現接口」OtherInterface「與對象」A「(如Integer),你也可以實現「SomeInterface」與同一個對象,不是我需要的東西「 – ZeDonDino 2013-02-22 18:22:02