欢迎使用CSDN-markdown编辑器
2015-09-29 11:56
423 查看
package cn.bdqn; import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) throws NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, ParseException { String kv = "user.user.user.name=wangyajie&name=hello&user.user.name=123&user.id=1&id=110&user.age=10&date=1990-10-10&user.date=2000-10-10"; // kv = "name=wangyajie"; User user = (User) getInfo(User.class, kv); System.out.println(user); } private static Object getInfo(Class<User> class1, String kv) throws NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, ParseException { Object obj = class1.newInstance(); String s[] = kv.split("&"); for (String string : s) { String key = string.split("=")[0]; String value = string.split("=")[1]; set(class1, key, value, obj); } return obj; } private static void set(Class<User> class1, String key, String value, Object obj) throws NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, ParseException { if (key.contains(".")) { Field field = class1.getDeclaredField(key.split("\\.", 2)[0]); Class class2 = field.getType(); field.setAccessible(true); if (field.get(obj) == null) { field.set(obj, class2.newInstance()); } set(class2, key.split("\\.", 2)[1], value, field.get(obj)); } else { Field field = class1.getDeclaredField(key); field.setAccessible(true); String fieldTypeName = field.getType().getName(); if (fieldTypeName.equals("java.lang.String")) { field.set(obj, value); } else if (fieldTypeName.equals(int.class.getName()) || fieldTypeName.equals(Integer.class.getName())) { field.set(obj, Integer.valueOf(value)); } else if (fieldTypeName.equals(double.class.getName()) || fieldTypeName.equals(Double.class.getName())) { field.set(obj, Double.valueOf(value)); } else if (fieldTypeName.equals(long.class.getName()) || fieldTypeName.equals(Long.class.getName())) { field.set(obj, Long.valueOf(value)); } else if (fieldTypeName.equals(boolean.class.getName()) || fieldTypeName.equals(Boolean.class.getName())) { field.set(obj, Boolean.valueOf(value)); } else if (fieldTypeName.equals(Date.class.getName())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); field.set(obj, sdf.parse(value)); } else if (fieldTypeName.equals(java.sql.Date.class.getName())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); field.set(obj, new java.sql.Date(sdf.parse(value).getTime())); } // field.set(obj, value); } } }
相关文章推荐
- C#网络编程
- Linux I/O Models
- 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- spring集成GZIP
- Linux内核中的常用数据结构-双向链表(1)
- compilation 元素(ASP.NET 设置架构)
- Could not load the assembly 'App_Web_cwclgcuu'. Make sure that it is compiled before accessing the page.
- a port with that name already exists的解决办法
- lua的编译、运行
- Find the Duplicate Number leetcode 287
- 自定义雷达扫描的实现
- Centos学习笔记 by 小陌_0226
- 最短路径 -- spfa
- oracle 12c 安装
- 推送消息接收
- 推送消息接收
- PHP是怎么运行的
- 在使用kvc进行赋值的时候,有时候会遇到null值,这个时候我们使用kvc会报错
- jquery中attr和prop的区别
- 使用百度地图API