博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射-方法(Method)
阅读量:4361 次
发布时间:2019-06-07

本文共 2615 字,大约阅读时间需要 8 分钟。

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

遇到的问题描述:

多个页面查询后,返回的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; }

转载于:https://www.cnblogs.com/Candies/p/4059069.html

你可能感兴趣的文章
Centos 安装lnmp完整版
查看>>
【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)
查看>>
redis安装和配置
查看>>
2016424王启元 Exp5 msf基础应用
查看>>
Differences between page and segment
查看>>
Jdk与Tomcat配置与安装
查看>>
关于一个Java web与JFrame的深度结合
查看>>
VB连数据库conn.open的参数
查看>>
《信息安全系统设计基础》实验三
查看>>
SpringBoot Docs
查看>>
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>
859. Buddy Strings - LeetCode
查看>>
[置顶] 关键字弹出动画
查看>>
支付宝api指南
查看>>
二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式
查看>>
docker-compose部署kafka
查看>>
IOS中NSUserDefaults的用法(轻量级本地数据存储)
查看>>
cms项目技术心得!
查看>>