将集合的泛型指定转换为其他泛型实现
/**
* 将集合的泛型指定转换为其他泛型
* @param sourceObjList 源集合
* @param targetClass 目标泛型Class对象
* @param <T> 最终转换的泛型
* @return
*/
private static <T> List<T> convertToAppointGenerics(List<?> sourceObjList, Class<T> targetClass){
List<T> targetObjList = new ArrayList<>();
if(CollectionUtils.isEmpty(sourceObjList)){
return targetObjList;
}
if(targetClass == null){
return targetObjList;
}
try{
for(Object sourceObj : sourceObjList){
T targetObj = targetClass.newInstance();
BeanUtils.copyProperties(sourceObj, targetObj);
targetObjList.add(targetObj);
}
} catch(Exception e) {
LOGGER.error("实例化对象时出现异常", e);
}
return targetObjList;
}
创建Admin实体
package cn.gdxiash.consumer.entity;
/**
* @author ShangHai
* @desc
*/
public class Admin {
private String copyField1;
private String copyField2;
public String getCopyField1() {
return copyField1;
}
public void setCopyField1(String copyField1) {
this.copyField1 = copyField1;
}
public String getCopyField2() {
return copyField2;
}
public void setCopyField2(String copyField2) {
this.copyField2 = copyField2;
}
}
创建User实体
package cn.gdxiash.consumer.entity;
/**
* @author ShangHai
* @desc
*/
public class User {
private String copyField1;
private String copyField2;
public String getCopyField1() {
return copyField1;
}
public void setCopyField1(String copyField1) {
this.copyField1 = copyField1;
}
public String getCopyField2() {
return copyField2;
}
public void setCopyField2(String copyField2) {
this.copyField2 = copyField2;
}
}
main方法测试
public static void main(String[] args) {
List<Admin> adminList = new ArrayList<>();
Admin admin = new Admin();
admin.setCopyField1("测试值1");
admin.setCopyField2("测试值2");
adminList.add(admin);
LOGGER.info(JSONObject.toJSONString(adminList));
// 将集合的泛型进行指定转换
List<User> userList = Test09.convertToAppointGenerics(adminList, User.class);
LOGGER.info(JSONObject.toJSONString(userList));
}
输出结果