首页新闻找找看学习计划

泛型问题求解

0
悬赏园豆:20 [待解决问题]

这是工具类

public class FactoryBeanUtil {

/**
* 将源对象属性值赋给目标对象属性
*
* @param src
* @param clazz
* @param <T>
* @return
* @throws Exception
*/
public static <T> T copyProperties(Object src, Class<T> clazz) {
if (src == null)
return null;

T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(src, target);

return target;
}

/**
* 将源list集合对象属性值赋给目标list集合对象属性
*
* @param src
* @param clazz
* @param <T>
* @return
* @throws Exception
*/
public static <T> List<T> copyPropertiesList(List<Object> src, Class<T> clazz) {
if (src == null)
return null;

List<T> list = new ArrayList<T>();
Iterator iterator = src.iterator();
while(iterator.hasNext()){
list.add(copyProperties(iterator.next(), clazz));
}

return list;
}

}

 

当如此调用的时候回报错

FactoryBeanUtil.copyPropertiesList(list, OpNewsDTO.class);

报错:

  The method copyPropertiesList(List<Object>, Class<T>) in the type FactoryBeanUtil is not applicable for the arguments (List<OpNewsDO>, Class<OpNewsDTO>)

  系统建议我转换成这个样子

  :public static <T> List<T> copyPropertiesList(List<OpNewsDO> list2, Class<OpNewsDTO> class1)

  请问如何修改这个方法才可以使用

猿==猿的主页 猿==猿 | 初学一级 | 园豆:183
提问于:2017-09-07 11:12
< >
分享
所有回答(2)
0

public static <T> List<T> copyPropertiesList(List<T> src, Class<T> clazz) 

你的方法里也没使用src啊.

吴瑞祥 | 园豆:28770 (高人七级) | 2017-09-07 11:25

不好意思,代码写的有点问题,我改了。但是您说的这种方法还是不行。

我要做的是吧一个VO转换成另一个VO,但是是个list集合。所以写了写了下边这个方法。

支持(0) 反对(0) 猿==猿 | 园豆:183 (初学一级) | 2017-09-07 13:34

@猿==猿: 那就是

public static <T,T2> List<T> copyPropertiesList(List<T2> src, Class<T> clazz) 

这样吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:28770 (高人七级) | 2017-09-07 13:42
0

Class<T> clazz

这个参数什么意义?只是传个类型吗?

为何不直接public static <T> List<T> copyPropertiesList<T>(List<T> src)

大兄弟竹子 | 园豆:54 (初学一级) | 2017-09-07 17:06

因为我要把List<OpNewsDO>,转化成List<OpNewsDTO> ,所以不能改成您说的这种方法。

支持(0) 反对(0) 猿==猿 | 园豆:183 (初学一级) | 2017-09-11 17:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册