/**
* 新反射实例化模型
* @param filenamepath
* @return
*/
public static Object newIntence(String filenamepath) {
Object t = null;
try {
Class<?> cls = Class.forName(filenamepath);
t = cls.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return t;
} @SuppressWarnings("unchecked")
public static <T> T convertObj(Map<String,Object> map, Class<T> cls) {
Object obj = ModelUtils.createInstance(cls);
if( map != null ) {
convertObj(JSONObject.fromObject(map), obj);
}
return (T)obj;
} public static void convertObj(JSONObject jsonObj, Object obj)
{
PropertyDescriptor pds[] = BeanUtils.getPropertyDescriptors(obj.getClass());
for(int i = 0; i < pds.length; i++)
{
PropertyDescriptor pd = pds[i];
if(jsonObj.containsKey(pd.getName())){
Method method = pd.getWriteMethod();
String parameterTypeName = (method.getParameterTypes()[0].getName());
Object ob = pd.getName();
//System.out.println(method.getName()+":"+ob+":"+jsonObj.get(ob));
invokeSetMethod(obj, method, converValueType(parameterTypeName, jsonObj.get(ob)));
}
} } public static void invokeSetMethod(Object object, Method method, Object value)
{
try
{
method.invoke(object, new Object[] {
value
});
}
catch(IllegalAccessException ex)
{
throw new IllegalArgumentException(ex.getMessage());
}
catch(InvocationTargetException ex)
{
throw new IllegalArgumentException(ex.getMessage());
}
catch(Exception ex)
{
throw new IllegalArgumentException(ex.getMessage());
}
} /**
* 数据根据类型转化成响应的数据
* @param methodType
* @param ob
* @return
*/
public static Object converValueType(String methodType,Object ob){
if( ob == null )return null;
if( StringUtils.isBlank(methodType)) return ob.toString();
if( "java.math.BigDecimal".equalsIgnoreCase(methodType)){
try {
return new BigDecimal(ob.toString());
} catch (Exception e) {
e.printStackTrace();
}
}else if( "java.lang.String".equalsIgnoreCase(methodType)){
try {
return ob.toString();
} catch (Exception e) {
e.printStackTrace();
} }else if( "java.lang.Integer".equalsIgnoreCase(methodType)){
try {
return Integer.parseInt(ob.toString());
} catch (Exception e) {
e.printStackTrace();
}
}else if( "java.util.Date".equalsIgnoreCase(methodType)){
try {
return DateTimeUtils.str2Date(ob.toString(), DateTimeUtils.FORMAT_yyyy_MM_dd);
} catch (Exception e) {
e.printStackTrace();
}
}else if( "long".equalsIgnoreCase(methodType)){
try {
return Long.parseLong(ob.toString());
} catch (Exception e) {
e.printStackTrace();
}
}else{
logger.debug("ConverUtils converValueType is fail .type["+methodType+"],value["+ob+"]");
}
return null;
}

java-读取javabean类的set方法并设值的更多相关文章

  1. Java读取Properties文件的六种方法

    使用J2SE API读取Properties文件的六种方法 1.使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedIn ...

  2. java读取配置文件的几种方法

    java读取配置文件的几种方法 原文地址:http://hbcui1984.iteye.com/blog/56496         在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配 ...

  3. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

  4. java的ThreadLocal类的使用方法

    java的ThreadLocal类的使用方法,ThreadLocal是一个支持泛型的类,用在多线程中用于防止并发冲突问题. 比如以下的一个样例,就是用于线程添加1,可是相互不冲突 package co ...

  5. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  6. Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能

    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...

  7. Java读取CSV和XML文件方法

    游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...

  8. java 之 file类的一些方法

    File类: File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.但是File不能访问文件内容本身. 访问文件和目录: 1. ...

  9. Java中String类的format方法使用总结

    可参考: http://www.cnblogs.com/fsjohnhuang/p/4094777.html http://kgd1120.iteye.com/blog/1293633 String类 ...

随机推荐

  1. java范型集合中的成员排序

    范型集合中的类是JsonObject,不是自定义类,如果是自定义类就直接取要比较的字段值. ArrayList<JSONObject> TList = new ArrayList<J ...

  2. 移动站适配rel=alternate PC页和H5页适配标注

    鉴于移动化大潮的汹涌和H5页的炫丽普及,百度针对PC页与H5页的跳转适配方式推出了最优方案:1.在pc版网页上,添加指向对应移动版网址的特殊链接rel="alternate"标记, ...

  3. dagger2记录篇

    作为一个码农,什么都不用多讲,贴代码 build project build module Application public class App extends Application { pri ...

  4. Android 自定义控件之继承ViewGroup创建新容器

    欢迎大家来学习本节内容,前几节我们已经学习了其他几种自定义控件,分别是Andriod 自定义控件之音频条及 Andriod 自定义控件之创建可以复用的组合控件还没有学习的同学请先去学习下,因为本节将使 ...

  5. ORA-00600: internal error code, arguments: [4194]

    使用PlateSpin复制出来的一数据库服务器(Oracle 10g)在启动数据库实例时遇到"ORA-00600: internal error code, arguments: [4194 ...

  6. hbase开发实例

    1.put/checkAndPut package com.testdata; import java.io.IOException; import org.apache.hadoop.conf.Co ...

  7. Java中serialVersionUID的解释及两种生成方式的区别(转载)

    转载自:http://blog.csdn.net/xuanxiaochuan/article/details/25052057 serialVersionUID作用:        序列化时为了保持版 ...

  8. Redis 与 数据库处理数据的两种模式

    Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Pyt ...

  9. ubuntu下修改键位

    尴尬的背景: 服役5年的笔记本,最近键盘失灵,部分键位彻底失去响应.最蛋疼的是左右方向键都不能用了 ○| ̄|_ 解决方案是,通过xmodmap命令,用其他相对鸡肋些的键位替代方向键. 1 查看各个键位 ...

  10. poll机制

    使用POLL机制代替linux输入子系统(input subsystem)之按键输入和LED控制中的异步通知,实现同样的效果. 1.代码 只简单修改input_subsys_test.c, input ...