1. 程式人生 > 其它 >List<String>轉換為實體類的屬性【轉】

List<String>轉換為實體類的屬性【轉】

package model;

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("ooP");
        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()); } 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() }); } 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) }); } } }