2011-04-19 63 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) { 
    ... 
    } 
}