簡體   English   中英

通用返回值(java)

[英]Generic return value (java)

這很好用:

// Return all objects with code 'code'.
static List<? extends ICode> getObjects(String code, List<? extends ICode> list)
{
  <ICode> retValue = new ArrayList<ICode>();
  for (ICode item : list)
  { 
    if (item.getCode().equals(code))
    {
        retValue.add(item);
    }
  }
  return retValue;
}

“單數”版本可以是:

// Return the first object found with code 'code'.
static ICode getObject(String code, List<? extends ICode> lijst)
{
  for (ICode item : lijst)
{
     if (item.getCode().equals(code)) return item;
}
return null;
}

但是,我希望返回值<? extends ICode>而不是返回值ICode <? extends ICode> <? extends ICode> 能做到嗎

參見Jon Skeets的答案,我現在更喜歡使用T代替? 也在復數形式中:

// Return all objects with code 'code'.
    public static <T extends ICode> List<T> getObjects(String code, List<T> lijst)
    {
        List<T> retValue = new ArrayList<T>();
        for (T item : lijst)
        {
        if (item.getCode().equals(code))
        {
        retValue.add(item);
        }
      }
      return retValue;
    }

我假設您希望它與實際列表的類型相同。 在這種情況下,應該這樣做:

static <T extends ICode> T getObject(String code, List<T> list)
{
  for (T item : list)
  {
     if (item.getCode().equals(code)) return item;
  }
  return null;
}

如果將返回類型設為ICode,則可以返回任何擴展ICode的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM