2011-04-19 65 views
1

我想在三個類中編寫一個函數,它將比較同一類的兩個對象列表。返回Java中接口和列表的類型和參數?

總體思路

List<Toads> aTList = ... 
List<Toads> bTList = ... 
List<Toads> tResult = compare(aTList , bTList); 

List<Frogs> aFList = ... 
List<Frogs> bFList = ... 
List<Frogs> fResult = compare(aFList , bFList); 

注:ToadFrog既可以擴展,提供必要的funcitons比較

的問題是比較後,我想用返回的一個接口列表(tResultfResult)及其特定類型(ToadFrog)。

我嘗試了一些像這裏指定Java interfaces and return types,但我不能讓所有類型排隊。

我也試過用<? extends Amphibian>這樣的東西作爲參數,返回類型爲compare,但是返回的類型是Amphibian

回答

1

public <T extends Amphibian> List<T> compare(List<T> a, List<T> b);

+0

我給pickypg的檢查,因爲他是第一個 – Adam 2011-04-19 17:32:52

1

其實你不給簽名compare。這是你想要的嗎?

<T extends YourInterface> T compare(List<T>, List<T>)

+0

我沒有給簽字,因爲我不知道它應該是什麼;)你的回答正是它,但pickypg是忍者 – Adam 2011-04-19 17:33:51

+0

當然,你不知道應該是什麼。但是方法簽名pickypg上還有其他的變體,我使用過 - 對我來說最明顯的是 - 也會實現您提供的代碼片段。它通常有助於顯示你迄今爲止所嘗試的內容。在這種情況下,這是沒有必要的。很高興你有事情的工作! – 2011-04-19 17:38:50

+0

我同意我可以更具體。我實際上希望通過不給予任何具體的東西,我不會阻止某人給我一些全新的東西。我不想用我的無知去玷污別人的光彩。 – Adam 2011-04-19 17:45:15

2

也許這東西是你在找什麼?

public class AmphibianComparer<T extends Amphibian> { 
    public List<T> compare(List<T> listOne, List<T> listTwo) { 
    ... 
    } 
}