Ger*_*ard 2 java generics return-value
这很好用:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
'单数'版本可以是:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
但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;
}
Run Code Online (Sandbox Code Playgroud)
我假设你希望它与实际列表的类型相同.在这种情况下,这应该这样做:
static <T extends ICode> T getObject(String code, List<T> list)
{
for (T item : list)
{
if (item.getCode().equals(code)) return item;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |