【问题标题】:Return types and arguments of interfaces and lists in Java?Java中接口和列表的返回类型和参数?
【发布时间】:2011-08-08 21:07:37
【问题描述】:

我正在尝试在三个类中编写一个函数,用于比较同一类的两个对象列表。

总体思路

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 都可以扩展一个接口,提供必要的比较功能

问题是,在比较之后,我想使用返回的列表(tResultfResult)及其特定类型(ToadFrog)。

我尝试了类似此处指定的Java interfaces and return types,但我无法让所有类型都对齐。

我也尝试使用&lt;? extends Amphibian&gt;之类的东西作为参数,返回类型为compare,但返回类型为Amphibian

【问题讨论】:

    标签: java list generics


    【解决方案1】:

    也许这就是您正在寻找的东西?

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

    【讨论】:

      【解决方案2】:

      public &lt;T extends Amphibian&gt; List&lt;T&gt; compare(List&lt;T&gt; a, List&lt;T&gt; b);

      【讨论】:

      • 我给pickypg支票,因为他是第一个
      【解决方案3】:

      您实际上并没有给compare 签名。这是你想要的吗?

      &lt;T extends YourInterface&gt; T compare(List&lt;T&gt;, List&lt;T&gt;)

      【讨论】:

      • 我没有给签名,因为我不知道它应该是什么;)你的答案就是这样,但是pickypg是一个忍者
      • 当然,你不知道它应该是什么。但是我使用的方法签名pickypg还有其他变体——这对我来说是最明显的——也可以满足你提供的代码 sn-p 。它通常有助于展示您到目前为止所尝试的内容。在这种情况下,没有必要。很高兴你的工作顺利!
      • 我同意我本来可以更具体。实际上,我希望通过不提供任何具体内容,我不会阻止某人给我一些全新的东西。我不想因为我的无知而玷污别人的才华。
      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      相关资源
      最近更新 更多