请教个泛型的问题

逍遥jc 杭州天丽科技有限公司 2015-12-22 07:57:00
public static Map getMapOfObjList(List objList,String keyName){
Map returnMap=new HashMap<>();
objList.forEach(obj->{
Long key=getLongOfObj(InvokersUtil.getInvokeValue(obj, keyName));
returnMap.put(key,obj);
});
return returnMap;
}

这段代码标红色地方如何正确使用泛型,使得调用的时候可以不限List中的类型范围。
...全文
92 点赞 收藏 5
写回复
5 条回复
abcdefghiijklmnopqrs 2015年12月22日
引用 4 楼 u010111184 的回复:
[quote=引用 3 楼 abcdefghiijklmnopqrs 的回复:] 如果没有在方法中对list进行添加操作,List<?>这样也可以,如果这样和参数类型不加泛型的效果是一样的
外部调用的时候,类型是不定的,我考虑过用T但是貌似不行的样子。[/quote]调用方法的时候类型还不知道?具体需求是什么,如果不行直接List<?>这样吧,反正在方法里面也没有向list中添加,只不过get方法的返回值只能是Object
回复 点赞
逍遥jc 2015年12月22日
引用 3 楼 abcdefghiijklmnopqrs 的回复:
如果没有在方法中对list进行添加操作,List<?>这样也可以,如果这样和参数类型不加泛型的效果是一样的
外部调用的时候,类型是不定的,我考虑过用T但是貌似不行的样子。
回复 点赞
abcdefghiijklmnopqrs 2015年12月22日
如果没有在方法中对list进行添加操作,List<?>这样也可以,如果这样和参数类型不加泛型的效果是一样的
回复 点赞
abcdefghiijklmnopqrs 2015年12月22日
如果没有在方法中对list进行传递参数List<?>这样也可以,只不过这样通过get方法得到值就是Object类型了 Map是返回值的类型,在写方法的时候就知道返回是什么类型了,所以直接用实际类型就行
回复 点赞
abcdefghiijklmnopqrs 2015年12月22日
public <T> static Map<Long,...> getMapOfObjList(List<T> objList,String keyName){//这个方法好像没有向List中添加值,所以直接用T,然后后面直接list.forEach()直接返回的就是实际的T
Map<Long,obj是什么类型这就写什么类型> returnMap=new HashMap<Long,一样>();
objList.forEach(obj->{ 
Long key=getLongOfObj(InvokersUtil.getInvokeValue(obj, keyName));
returnMap.put(key,obj);
});
return returnMap;
}
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告