用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

List<String>转换为实体类的属性

2014-03-14 作者: ooP举报

[java]代码库

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) });
		}
	}

}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...