/**
* 新反射实例化模型
* @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. EC笔记:第三部分:14、在资源管理类中小心Copying行为

    场景 上一节实现了智能指针,其中的拷贝构造函数和赋值运算符是通过增加/减少指针的引用计数来操作的.但是如果是管理一个独占资源呢?我们希望在一个资源使用时被锁定,在使用完毕后被释放. #include ...

  2. 居然是Firefox没有抛弃我们

    面向企业级市场,一款网页浏览器的很多特性不是说改就改,说丢弃就丢弃.就像微软不能抛弃IE一样,Firefox也有类似的定位和使命. Firefox即尝试提供企业级市场所需的特性稳定的软件版本(LTS) ...

  3. perl 如何匹配ASCII码以及ASCII码转换

    匹配ASCII码:   /[:ascii:]/ ASCII码转换为数字: ord() 数字转换为ASCII码: chr()

  4. Qt——组件位置随窗口变化

    当我们用Qt Designer设计界面时,有时会面临这样一个问题:需要在窗口指定位置放置组件,并且当窗口位置大小改变时,该组件相对其父对象的位置是不变的,如下面两幅图所示 ,首先看上面这幅图,注意bu ...

  5. 让产品有效迭代,前端A/B Testing的简单实现

    A/B Testing简介 互联网产品的迭代速度很快,往往一周一小发布,一月一大发布,产品提出的种种需求,哪些改动是提升产品体验的,哪些是阻碍产品进步的,如果没有数据可以参考,仅仅是靠拍脑袋的话,对产 ...

  6. 基于Nuclear的Web组件-Todo的十一种写法

    刀耕火种 刀耕火种是新石器时代残留的农业经营方式.又称迁移农业,为原始生荒耕作制. var TodoApp = Nuclear.create({ add: function (evt) { evt.p ...

  7. jQuery实现DOM加载方法源码分析

    传统的判断dom加载的方法 使用 dom0级 onload事件来进行触发所有浏览器都支持在最初是很流行的写法 我们都熟悉这种写法: window.onload=function(){ ... }  但 ...

  8. JavaScript学习笔记4之 ByClass&json

    一.通过class获取标签 var out=document.getElementsByClassName(‘out’);IE 6 7 8 不支持 getElementsName 是否有办法既能通过c ...

  9. npm更新到最新版本的方法

    打开命令行工具 npm -v 查看是否是最新版本 如果不是 运行npm i npm g 升级 打开C:\Users\用户名用户目录找到node_modules 文件夹下的npm文件夹,复制一份 打开n ...

  10. ListView和Adapter数据适配器的简单介绍

    ListView 显示大量相同格式数据 常用属性: listSelector            listView每项在选中.按下等不同状态时的Drawable divider            ...