java List Object[] 转换成一个List T 工具类

List<Object[]> 转换成一个List<T> 工具类,代码如下:

ObjectConvertUtils.java文件:

package com.xm.utils;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;

/**
 * List<Object[]>转换成一个List<T>工具类
 * @author ouyangjun
 */
public class ObjectConvertUtils {
	
	/**
	 * 把一个List<Object[]>转换成一个List<T>
	 * @param list
	 * @param clz
	 * @return
	 * @throws Exception
	 */
	public static <T> List<T> objectToBean(List<Object[]> objList, Class<T> clz) throws Exception{
		if(objList==null || objList.size()==0) {
			return null;
		}
		
		Class<?>[] cz = null;
		Constructor<?>[] cons = clz.getConstructors();
		for(Constructor<?> ct : cons) {
			Class<?>[] clazz = ct.getParameterTypes();
			if(objList.get(0).length == clazz.length) {
				cz = clazz;
				break;
			}
		}
		
		List<T> list = new ArrayList<T>();
		for(Object[] obj : objList) {
			Constructor<T> cr = clz.getConstructor(cz);
			list.add(cr.newInstance(obj));
		}
		return list;
	}
	
}

PhoneVO.java文件:

package com.xm.bean;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * vo
 * @author ouyangjun
 */
public class PhoneVO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public PhoneVO() {}
	
	/**
	 * 这个构造器赋值时使用
	 * 注意: 赋值时,参数类型一定要对应
	 * @param plate
	 * @param number
	 * @param memory
	 * @param size
	 */
	public PhoneVO(String plate, BigDecimal number, double memory, double size) {
		super();
		this.plate = plate;
		this.number = String.valueOf(number);
		this.memory = String.valueOf(memory);
		this.size = String.valueOf(size);
	}

	public String plate;
	public String number;
	public String memory;
	public String size;

	public String getPlate() {
		return plate;
	}

	public void setPlate(String plate) {
		this.plate = plate;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getMemory() {
		return memory;
	}

	public void setMemory(String memory) {
		this.memory = memory;
	}

	public String getSize() {
		return size;
	}

	public void setSize(String size) {
		this.size = size;
	}
	
}

ObjectToBeanTest.java文件:

package com.xm.test;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.xm.bean.PhoneVO;
import com.xm.utils.ObjectConvertUtils;

/**
 * 测试类
 * @author ouyangjun
 */
public class ObjectToBeanTest {

	public static void main(String[] args) throws Exception {
		
		// 初始化数据
		Object[] obj = new Object[4];
		obj[0] = "hw";
		obj[1] = BigDecimal.valueOf(13699999999L);
		obj[2] = 4.7;
		obj[3] = 5.0;
		
		Object[] obj1 = new Object[4];
		obj1[0] = "apple";
		obj1[1] = BigDecimal.valueOf(13611111111L);
		obj1[2] = 4.8;
		obj1[3] = 5.7;
		
		List<Object[]> objList = new ArrayList<Object[]>();
		objList.add(obj);
		objList.add(obj1);
		
		// 工具类
		List<PhoneVO> list = ObjectConvertUtils.objectToBean(objList, PhoneVO.class);
		for(PhoneVO phone : list) {
			System.out.println(phone.getPlate() + "\t" + phone.getNumber() +
					"\t" + phone.getMemory() + "\t" + phone.getSize());
		}
		
	}

}

执行测试结果如下:

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/81190087