Java反射使用实例(http实体类转换)
来源:互联网 发布:中文编程从入门到精通 编辑:程序博客网 时间:2024/06/03 23:02
package com.netfinworks.site.ext.service.facade.converter;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import com.yongda.site.core.common.annotation.HttpField;
import com.yongda.site.service.personal.facade.request.FastRegisterRequest;
/**
* http请求转换
* @desc
* @author slong
* @version: 2016年4月25日 下午5:40:46
*/
public class HttpRequestConvert {
public static <T> T convert2Request(Map<String,String> paramsMap,Class<T> clz){
T obj = null;
try {
obj = clz.newInstance();
copyMapToBean(paramsMap, clz, obj);
} catch (Exception e) {
}
return obj;
}
public static <T> T copyMapToBean(Map<String,String> paramsMap,Class<T> clz,T obj){
if(obj == null){
try {
obj = clz.newInstance();
} catch (Exception e1) {
return null;
}
}
Field[] declaredFields = clz.getDeclaredFields();
for(Field declaredField:declaredFields){
if((declaredField.getModifiers() & java.lang.reflect.Modifier.STATIC) == java.lang.reflect.Modifier.STATIC){
continue;
}
String httpKey = declaredField.getName();
Object propValue = null;
HttpField field = declaredField.getAnnotation(HttpField.class);
Class<?> declaredFieldClass = declaredField.getType();
if(field != null){
if(StringUtils.isNotBlank(field.name())){
httpKey = field.name();
}
}
String value = paramsMap.get(httpKey);
if(StringUtils.isNotBlank(value)){
if(declaredFieldClass.getName().equals("java.util.Date")){
if(field != null && StringUtils.isNotBlank(field.dateFormat()))
try {
propValue = new SimpleDateFormat(field.dateFormat()).parse(value);
} catch (ParseException e) {
propValue = null;
}
} else if (declaredFieldClass.getName().equals("java.lang.String")) {
propValue = value;
} else if (declaredFieldClass.getName().equals("java.lang.String")) {
propValue = value;
} else if (declaredFieldClass.getName().equals("java.lang.Integer") || declaredFieldClass.getName().equals("int")) {
propValue = new java.lang.Integer(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Long") || declaredFieldClass.getName().equals("long")) {
propValue = new java.lang.Long(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Double") || declaredFieldClass.getName().equals("double")) {
propValue = new java.lang.Double(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Float") || declaredFieldClass.getName().equals("Float")) {
propValue = new java.lang.Float(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Short")) {
propValue = new java.lang.Short(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Byte")) {
propValue = new java.lang.Byte(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Boolean") || declaredFieldClass.getName().equals("boolean")) {
propValue = new java.lang.Boolean(value.toString());
}
try {
PropertyUtils.setProperty(obj, declaredField.getName(), propValue);
} catch (Exception e) {
}
}
}
Class<? super T> superClass = clz.getSuperclass();
if(superClass != null){
copyMapToBean(paramsMap, superClass, obj);
}
return obj;
}
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put("account", "1234567");
map.put("_service", "create_member");
map.put("deviceid", "app1234");
FastRegisterRequest req = convert2Request(map, FastRegisterRequest.class);
System.out.println(req);
}
}
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import com.yongda.site.core.common.annotation.HttpField;
import com.yongda.site.service.personal.facade.request.FastRegisterRequest;
/**
* http请求转换
* @desc
* @author slong
* @version: 2016年4月25日 下午5:40:46
*/
public class HttpRequestConvert {
public static <T> T convert2Request(Map<String,String> paramsMap,Class<T> clz){
T obj = null;
try {
obj = clz.newInstance();
copyMapToBean(paramsMap, clz, obj);
} catch (Exception e) {
}
return obj;
}
public static <T> T copyMapToBean(Map<String,String> paramsMap,Class<T> clz,T obj){
if(obj == null){
try {
obj = clz.newInstance();
} catch (Exception e1) {
return null;
}
}
Field[] declaredFields = clz.getDeclaredFields();
for(Field declaredField:declaredFields){
if((declaredField.getModifiers() & java.lang.reflect.Modifier.STATIC) == java.lang.reflect.Modifier.STATIC){
continue;
}
String httpKey = declaredField.getName();
Object propValue = null;
HttpField field = declaredField.getAnnotation(HttpField.class);
Class<?> declaredFieldClass = declaredField.getType();
if(field != null){
if(StringUtils.isNotBlank(field.name())){
httpKey = field.name();
}
}
String value = paramsMap.get(httpKey);
if(StringUtils.isNotBlank(value)){
if(declaredFieldClass.getName().equals("java.util.Date")){
if(field != null && StringUtils.isNotBlank(field.dateFormat()))
try {
propValue = new SimpleDateFormat(field.dateFormat()).parse(value);
} catch (ParseException e) {
propValue = null;
}
} else if (declaredFieldClass.getName().equals("java.lang.String")) {
propValue = value;
} else if (declaredFieldClass.getName().equals("java.lang.String")) {
propValue = value;
} else if (declaredFieldClass.getName().equals("java.lang.Integer") || declaredFieldClass.getName().equals("int")) {
propValue = new java.lang.Integer(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Long") || declaredFieldClass.getName().equals("long")) {
propValue = new java.lang.Long(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Double") || declaredFieldClass.getName().equals("double")) {
propValue = new java.lang.Double(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Float") || declaredFieldClass.getName().equals("Float")) {
propValue = new java.lang.Float(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Short")) {
propValue = new java.lang.Short(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Byte")) {
propValue = new java.lang.Byte(value.toString());
} else if (declaredFieldClass.getName().equals("java.lang.Boolean") || declaredFieldClass.getName().equals("boolean")) {
propValue = new java.lang.Boolean(value.toString());
}
try {
PropertyUtils.setProperty(obj, declaredField.getName(), propValue);
} catch (Exception e) {
}
}
}
Class<? super T> superClass = clz.getSuperclass();
if(superClass != null){
copyMapToBean(paramsMap, superClass, obj);
}
return obj;
}
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put("account", "1234567");
map.put("_service", "create_member");
map.put("deviceid", "app1234");
FastRegisterRequest req = convert2Request(map, FastRegisterRequest.class);
System.out.println(req);
}
}
0 0
- Java反射使用实例(http实体类转换)
- java 反射 将json对象转换为实体类
- java反射实现实体类与实体DTO类之间的转换
- java反射使用实例
- java使用反射实例
- 泛型加反射 DataTable转换成实体类
- java中使用反射获取pojo(实体)类的所有字段值
- JAVA利用反射、JSON实例化实体对象(包含ManyToOne)
- Java反射实体类属性(get ,set方法)
- Java反射实体类属性(get ,set方法)
- EF.使用反射解决实体类型转换问题
- 利用Java的反射机制实现Bean实体与Map自动转换的工具类
- JAVA jdbc ResultSet 通过反射机制转换为实体类Bean
- JAVA 数据表反射实体类,自动生成实体类
- Java反射机制使用实例
- 不使用反射的实体类
- Java反射类实例
- java反射给实体类赋值
- RHEL6&7的Kickstart的变化
- hdu 3507 Print Article(斜率优化DP)
- 脚本UI界面
- scala入门3
- HTML5属性data-*的操作
- Java反射使用实例(http实体类转换)
- RecyclerView和CardView的使用以及注意
- Java设计模式----工厂模式
- ubuntu14.04安装chrom
- 学习笔记:sprintf做编码转换
- Redis学习笔记(1)-安装Oracle VM VirtualBox
- C++实验四----乘法口诀表
- charset和pageEncoding
- ANDROID内存优化(大汇总——上)