工作了三年,第二次使用反射!

遇到的问题描述:

多个页面查询后,返回的List中的对象属性为“.00”,页面显示不友好。

查询原因是因为查询数据的SQL为:to_char(a.applyAmount,'999g999g999d99') as applyAmount,

而数据库中applyAmount的值为0。

如果使用以下SQL语句进行测试的话,查询结果也会查询“            .00”的情况。

同时WEB端已采用标签库的形式解决了该问题,Mobile端使用该标签时,不能进行解析该标签。

SELECT TO_CHAR('0','999g999g999d99') FROM DUAL

这次的编码思路:

利用反射机制,使用List中对应的所有的setter()和getter()方法,将对象的属性重新赋值!

代码如下:

    /**
* 利用Java反射机制
* 当List中的对象属性-金额出现“.00”时,替换成“0”
* @author czx
* @date 2014-10-29
* @param list 要处理的List可能是<?>类型的List
* @return 处理后的List,即替换“.00”为“0”的List
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List amonuntOfList2StringUtil(List list) {
List newList = new ArrayList();
// 非空判断
if (list != null && list.size() > 0) {
// 遍历循环list
for (Object o : list) {
// 取得list中存放的对象所属的类
Class c = o.getClass();
// 取得该类的所有方法数组
Method[] ma = c.getMethods();
if (ma.length > 0) {
// 遍历该方法数组
for (Method m : ma) {
// 仅处理set方法
if (m.getName().indexOf("set") >= 0) {
try {
// 取得get()方法
Method newm = c.getMethod(m.getName().replace("set", "get"),new Class[] {});
// 使用get()方法取得对应属性
Object newo = newm.invoke(o, new Object[] {});
// 属性满足去空.trim()后和“.00”相等时,替换为“0”
if (newo != null && ".00".equals(newo.toString().trim())) {
// 使用set()方法,设置属性
m.invoke(o, new Object[] { "0" });
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
}
newList.add(o);
}
return newList;
}
return list;
}

Java反射-方法(Method)的更多相关文章

  1. Java 反射机制[Method反射]

    Java 反射机制[Method反射] 接着上一篇Java 反射机制[Field反射],通过调用Person类的setName方法将obj的name字段的Value设置为"callPerso ...

  2. 【译】5. Java反射——方法

    原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...

  3. Java 反射 方法调用

    在使用Java 反射时,对方法的调用,可能碰到最多的问题是,方法的变量如何使用.其实,调用方法的变量全部在参数数组里,不管有多少个参数,你都要把它放在参数数组里,如果是单个非数组参数,则可不使用参数数 ...

  4. java反射机制 + Method.invoke解释 getMethod + 反射理解

    功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...

  5. java反射--方法反射的基本操作

    方法的反射 1)如何获取某个方法 方法的名称和方法的参数列表才能唯一决定某个方法. 2)方法反射的操作 method.invoke(对象,参数列表). 代码实例: package com.reflec ...

  6. java反射——方法

    大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...

  7. Java反射方法总结

    1.得到构造器的方法 Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数, Constructor[] getConstr ...

  8. JAVA 反射之Method

    ★ Method没有构造器,只能通过Class获取. 重点方法: class.getDeclaredMethods():获取所有方法. class.getDeclaredMethod(String n ...

  9. 【译】7. Java反射——私有字段和私有方法

    原文地址:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html =================== ...

随机推荐

  1. jpa delete related

    delete deleteAll deleteInBatch notice List<Ap> apList = .deleteInBatch(apList)

  2. Spring浅探

    热度最大的框架,它也称为业务层框架.Spring这个框架的诞生,给程序员揭示了两个主要的思想:Ioc,Aop: 最近的网页架构可以分为这样. 传统结构中,每个层都得new出依赖层的类进行一些本层操作, ...

  3. MySQL缺失mysql_config文件

    打算爬虫,安装mysqldb 结果使用pip安装出错 在centos-6.4上pip install mysql-python,报错如下[sentry@kjtest111 mysql-python]$ ...

  4. Oralce配置正确,报监听错误或无法识别描述中的服务

    出差客户现场,修改过网络配置,回来后本地虚拟机的Oracle数据库就不能登陆了 报监听错误,在服务器中使用Net Configration Assistant删除以前的,重新配置新的,还是不行,重启系 ...

  5. 股市非常态,CCI指标买卖点实例图解

    CCI指标即顺势指标,是唐纳德·蓝伯特于上世纪80年代提出的,是一种比较新颖的技术指标.CCI指标是专门用来衡量股价是否超出常态分布范围,是一种 超买超卖类指标,但它与其他超买超卖型指标又有自己比较独 ...

  6. PHP ob系列函数详解

    一. 相关函数简介:    1.Flush:刷新缓冲区的内容,输出.    函数格式:flush()    说明:这个函数经常使用,效率很高.    2.ob_start :打开输出缓冲区    函数 ...

  7. Python特殊语法:filter、map、reduce、lambda [转]

    Python特殊语法:filter.map.reduce.lambda [转] python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, s ...

  8. Unity3D热更全书

    http://www.cnblogs.com/crazylights/p/3897742.html

  9. clipboard复制剪贴板功能,以及用requirejs时报错---Uncaught ReferenceError: Clipboard is not defined

    zeroclipboard是走的flash插件,手机浏览器是不支持的,所以不得不舍弃之,用clipboard,clipboard不需要flash就可以完成复制剪切等功能,而且可以兼容pc,移动端,下面 ...

  10. 最好用的placeholder插件,jQuery插件EnPlaceholder

    EnPlaceholder插件支持密码框哦!实际对比同类的placeholder插件在ie等浏览器下效果做好! 插件效果预览:http://www.wufangbo.com/demo/jquery/3 ...