List转实体类

来源:互联网 发布:怎么用matlab编程 编辑:程序博客网 时间:2024/06/10 18:38

自己复制试验一下,理解处理过程对你长进促进很大

实例:

import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;public class ListToModel {    public static void main(String[] args) {        List<Object> userList = new ArrayList<Object>();        userList.add("tom");        userList.add("男");        userList.add(18);        User user = new User();        try {            listToModel(userList, user);        } catch (Exception e) {            e.printStackTrace();        }        System.out.println(user.getName() + "; " + user.getGender() + "; " + user.getAge());    }        //把list内容逐个取出来放进User实体类中    public static <T> void listToModel(List<Object> list, T t) throws Exception {        Field[] fields = t.getClass().getDeclaredFields();        if (list.size() != fields.length) {            return;        }        for (int k = 0, len = fields.length; k < len; k++) {            // 根据属性名称,找寻合适的set方法            String fieldName = fields[k].getName();            String setMethodName = "set" + fieldName.substring(0, 1).toUpperCase()                    + fieldName.substring(1);            Method method = null;            Class<?> clazz = t.getClass();            try {                method = clazz.getMethod(setMethodName, new Class[] { list.get(k).getClass() });                System.out.println("list.get("+k+").getClass():"+list.get(k).getClass());            } catch (SecurityException e1) {                e1.printStackTrace();                return;            } catch (NoSuchMethodException e1) {                String newMethodName = "set" + fieldName.substring(0, 1).toLowerCase()                        + fieldName.substring(1);                try {                    method = clazz.getMethod(newMethodName, new Class[] { list.get(k).getClass() });                } catch (SecurityException e) {                    e.printStackTrace();                    return;                } catch (NoSuchMethodException e) {                    e.printStackTrace();                    return;                }            }            if (method == null) {                return;            }            method.invoke(t, new Object[] { list.get(k) });        }    }}class User{private String name;private String gender;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}

实体类userList的元素类型要处理好,其元素都是封装类型的,比如数字类型是Integer,Double,Float等等。与User要对应处理起来更方便,不然报错不断。

阅读全文
0 0
原创粉丝点击