Java反射-方法(Method)
工作了三年,第二次使用反射!
遇到的问题描述:
多个页面查询后,返回的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)的更多相关文章
- Java 反射机制[Method反射]
Java 反射机制[Method反射] 接着上一篇Java 反射机制[Field反射],通过调用Person类的setName方法将obj的name字段的Value设置为"callPerso ...
- 【译】5. Java反射——方法
原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...
- Java 反射 方法调用
在使用Java 反射时,对方法的调用,可能碰到最多的问题是,方法的变量如何使用.其实,调用方法的变量全部在参数数组里,不管有多少个参数,你都要把它放在参数数组里,如果是单个非数组参数,则可不使用参数数 ...
- java反射机制 + Method.invoke解释 getMethod + 反射理解
功能: 通过读取另一个Dll去创建一个控件(Form,Button,TextBox,DataGridView),然后对当中一些属性进行检查. 创建控件的大致流程是,Assembly->Modul ...
- java反射--方法反射的基本操作
方法的反射 1)如何获取某个方法 方法的名称和方法的参数列表才能唯一决定某个方法. 2)方法反射的操作 method.invoke(对象,参数列表). 代码实例: package com.reflec ...
- java反射——方法
大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...
- Java反射方法总结
1.得到构造器的方法 Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数, Constructor[] getConstr ...
- JAVA 反射之Method
★ Method没有构造器,只能通过Class获取. 重点方法: class.getDeclaredMethods():获取所有方法. class.getDeclaredMethod(String n ...
- 【译】7. Java反射——私有字段和私有方法
原文地址:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html =================== ...
随机推荐
- Tortoise SVN 安装界面
Tortoise SVN 安装界面 TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费 第一步: 点击TortoiseSVN-1.6.6.17493-w ...
- matlab————矩阵输出到txt
matlab如何输出矩阵到txt并指定数的精度 (2013-11-20 16:50:43)转载▼ 标签: matlab 输出数据 假设你的数据矩阵为a; [m n] = size(a); [filen ...
- centos nc命令安装
yum install nc.x86_64 nc命令的参数 参数 作用-i 设置数据报传送时间间隔-l 以服务器方式运行-k 重复接收并处理某个端口上的所有连接,必须与-l选项一起使用-n 使用ip地 ...
- win 2012 修改盘符
开始--运行 diskmgmt.msc ........
- JavaWeb学习笔记——jsp:setproperty和getproperty
- JavaScript学习笔记——对象分类
对象的分类 一.对象的分类 1.内置对象 Global Math 2.本地对象 Array Number String Boolean Function RegExp 3.宿主对象 DOM BOM 二 ...
- document.body.scrollTop用法
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- Linux下MySQL忘记密码
系统:CentOS6.6 64位 参考文档(截图请看原网址): Linux下MySQL忘记root密码怎么办_百度经验 http://jingyan.baidu.com/article/1709ad8 ...
- PHP isset 函数作用
isset函数是检测变量是否设置. 格式:bool isset ( mixed var [, mixed var [, ...]] ) 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NU ...
- Jetty与tomcat的比较
Google 应用系统引擎最初是以 Apache Tomcat 作为其 webserver/servlet 容器的,但最终将切换到 Jetty 上. 这个决定让许多开发人员都诧异的想问:为什么要做这样 ...