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 =================== ...
随机推荐
- asp.net下调用Matlab生成动态链接库
对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库.至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置 ...
- Git删除tag
git tag -d v2016062101 删除本地tag git push origin --delete tag v2016062101 删除远程tag
- WinForm------给GridControl添加搜索功能
//按钮点击事件 private void Btn_Search_Click(object sender, EventArgs e) { //获取编辑框的值 string text = this.te ...
- Windows7、8无法访问其他计算机共享盘
Windows7.8无法访问其他计算机共享盘 WIN7 访问共享的时候提示用户名和密码不正确,在XP系统上可以正常访问 一.win+r gpedit.msc 进行组策略如图所示 二.wind ...
- JavaWeb学习笔记——jsp:setproperty和getproperty
- ecshop 获取某个商品的 所有订单信息 或者销量
把一下代码放到 lib_main.php 1.统计某个下单商品的人数 function get_goods_ordernum($goods_id){ $sql = "select count ...
- Wordpress文章图片不居中与开头缩进问题
//段落开头缩进 .Mid2L_con p {text-indent:2em;} //文章内图片不居中(设置居中后) .Mid2L_con .aligncenter { display: block; ...
- SQL语句学习笔记
从外部EXCEl文件导入sqlserver数据库操作命令 reconfigure reconfigure go select * into abc1_1 from OPENROWSET('MICROS ...
- Javaee----重新回顾servlet
最近面临找工作,不得不回顾一下java servelt . 发现lz的基本功还是很差 1. 每一个servlet都必须实现servlet接口,GenericServlet是个通用的.不特定于任何协议的 ...
- JS,html压缩及混淆工具
现在已经出现了不少有自己特色的: JSMin Javascript compressor Packer Closure Compiler YUI Compressor Pretty Diff Java ...