- 浏览: 234630 次
- 性别:
- 来自: 上海
博客专栏
-
Java应用集锦
浏览量:22400
文章分类
最新评论
-
yipeng_666:
yipeng_666 写道楼主可以分享源码吗 , 感激不尽邮 ...
基于jquery框架dwz做的后台管理系统 -
yipeng_666:
楼主可以分享源码吗 , 感激不尽
基于jquery框架dwz做的后台管理系统 -
ughome:
楼主,能发个源码吗,我删除后刷新有问题,总是跳转到第一页。查询 ...
基于jquery框架dwz做的后台管理系统 -
ellie_it:
DWZ研究中,楼主可以分享源码学习下吗?万分感谢! 93020 ...
基于jquery框架dwz做的后台管理系统 -
hongshenghome:
前辈,dwz刚开始学,给我发份源码,万分感谢!!!!!,邮箱 ...
基于jquery框架dwz做的后台管理系统
在项目中多处使用到反射方法,jdk为1.5.现总结如下:
1.设置java对象的指定属性为指定值,调用set方法:
/** * 使用反射机制进行设置值. * @param o 对象 * @param name 要设置的属性 * @param value 要设置的value */ public static void setPro(Object o, String name, String value) { PropertyDescriptor[] props; try { props = Introspector.getBeanInfo(o.getClass(), Object.class) .getPropertyDescriptors(); for (int temp = 0; temp < props.length; temp++) { if (name.equals(props[temp].getName())) { try { props[temp].getWriteMethod().invoke(o, value); } catch (Exception e) { } break; } } } catch (IntrospectionException e1) { e1.printStackTrace(); } }
2.得到java bean里面的属性值
/** * 得到指定对象的指定属性值. * @param o 对象 * @param name 属性名 * @return */ public static String getPro(Object o, String name) { String result = ""; PropertyDescriptor[] props; try { props = Introspector.getBeanInfo(o.getClass(), Object.class) .getPropertyDescriptors(); for (int temp = 0; temp < props.length; temp++) { if (name.equals(props[temp].getName())) { try { result = props[temp].getReadMethod().invoke(o) .toString(); } catch (Exception e) { } break; } } return result; } catch (IntrospectionException e1) { e1.printStackTrace(); return null; } }
3.打印一个java bean里面的全部的get方法:
public static void getAllGets(Object o) { Method[] method = o.getClass().getMethods(); try { for (int i = 0; i < method.length; i++) { //如果方法名是含有get的名称,而且是返回的string类型,以及参数个数为空,就调用该方法。 if (method[i].getName().indexOf("get") != -1 && method[i].getGenericReturnType().toString().indexOf( "String") != -1 && method[i].getGenericParameterTypes().length == 0) { System.out.println(i + method[i].getName() + "():\n" + method[i].invoke(o, null)); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
4.得到一个对象里面全部返回值为string类型的方法:
/** * 得到一个对象的返回string的全部方法. * @param o */ public static List<String> getAllMethods(Object o) { Method[] method = o.getClass().getMethods(); List<String> methods = new ArrayList(); try { for (int i = 0; i < method.length; i++) { //如果方法名是含有get的名称,而且是返回的string类型,以及参数个数为空,就调用该方法。 if ( method[i].getGenericReturnType().toString().indexOf( "String") != -1 && method[i].getGenericParameterTypes().length == 0) { methods.add(method[i].getName()); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } return methods; }
5.得到一个对象的全部属性
/** * 得到一个对象的全部属性值. * @param o * @return 属性名和属性值的映射 */ public static Map getAllProperties(Object o) { Map ans = new HashMap(); PropertyDescriptor[] props; try { props = Introspector.getBeanInfo(o.getClass(), Object.class) .getPropertyDescriptors(); for (int temp = 0; temp < props.length; temp++) { String result = null; if(props[temp].getReadMethod().invoke(o)!=null) result = props[temp].getReadMethod().invoke(o).toString(); ans.put(props[temp].getName(), result); } } catch (Exception e1) { e1.printStackTrace(); } return ans; }
6.返回对象中设置了get方法的属性的集合
/** * 返回对象中设置了get方法的属性的集合,注意集合的成员是Field对象! * @param obj * @return */ public static List<Field> allAttrWithGetMethod(Object obj) { Field[] fields = obj.getClass().getDeclaredFields(); Method[] methods = obj.getClass().getMethods(); List result = new ArrayList(); for (Field field : fields) { String fieldName = field.getName(); String upperFirstLetter = fieldName.substring(0, 1).toUpperCase(); String getMethodName = "get" + upperFirstLetter + fieldName.substring(1); for (Method method : methods) { if (Util.equals(getMethodName, method.getName())) { result.add(field); } } } return result; }
7.执行指定对象的无参方法:
/** * 使用反射执行指定对象的无参方法,返回结果是一个对象. * @param obj 对象 * @param methodName 方法名 * @return * @throws MVCException */ public static Object invoke(Object obj, String methodName) throws Exception,MVCException { try { //如果没有配置method参数就默认的使用execute()方法。 if(Util.isEmpty(methodName)) methodName = "execute"; if(!getAllMethods(obj).contains(methodName)){ throw new MVCException(obj.getClass().getName()+"反射执行方法中没有找到与"+methodName+"匹配的方法,或者没有execute方法!"); } Method method = obj.getClass().getMethod(methodName, null); return method.invoke(obj, null); } catch (MVCException e) { throw e; } catch (Exception e) { throw e; } }
8.执行有参的私有方法:
/** * 调用指定对象的私有方法 * @param object * @param methodName * @param params * @return * @throws NoSuchMethodException */ public static Object invokePrivateMethod(Object object, String methodName, Object... params) throws NoSuchMethodException { Assert.notNull(object); Assert.hasText(methodName); //得到参数数组的类型,后面将根据这个查找指定的方法对象. Class[] types = new Class[params.length]; for (int i = 0; i < params.length; i++) { types[i] = params[i].getClass(); } Class clazz = object.getClass(); Method method = null; //向上转型一直找到基类里面的方法. for (Class superClass = clazz; superClass != Object.class; superClass = superClass .getSuperclass()) { try { //两个参数表示:方法名,方法中的参数数组. //返回方法对象. method = superClass.getDeclaredMethod(methodName, types); break; } catch (NoSuchMethodException e) { } } if (method == null) throw new NoSuchMethodException(clazz.getSimpleName()+" No Such Method:" + methodName); //先保存以前的可访问性 boolean accessible = method.isAccessible(); method.setAccessible(true); Object result = null; try { result = method.invoke(object, params); } catch (Exception e) { ReflectionUtils.handleReflectionException(e); } method.setAccessible(accessible); return result; }
9.BeanUtils工具类
import org.apache.commons.beanutils.BeanUtils; public static void main(String[] args){ Chart s = new Chart(); try { Map m = BeanUtils.describe(s); System.out.println(m.keySet()); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
发表评论
-
test
2018-02-01 15:19 0testtesttesttest -
spring中使用AOP进行日志记录[含代码]
2017-09-13 15:14 731spring的IOC和AOP是说的最烂的东西,尤其是后者, ... -
关于java web开发中的很多小问题集锦
2017-05-11 11:24 19751、导出excel文件,文件名的中文问题 public ... -
自定义java类重写hashcode和equals方法
2014-12-24 15:34 12241.何时需要重写equals() 当一个类有自 ... -
java的普通类重写hashcode和equals方法
2014-12-24 15:33 0class AddServe { public Stri ... -
解决问题
2013-11-18 22:54 1365启动tomcat的时候,报错如下: java 写道 严 ... -
强烈推荐一个简单而实用的数据库连接池工程
2013-07-15 23:53 1064接触过很多的数据库连接池,有d3p0,druid,都比较nb ... -
自己写的一个jedis操作模板类
2013-07-15 23:28 1361jedis是java的redis客户端程序,在spring下 ... -
打算写一个关于股票的开源小玩意
2013-03-08 23:44 0目标: 1.锻炼自己的编码能力,组织代码的能力 2.为 ... -
java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
2012-11-16 16:03 19889转账注明出处:http://renjie120.iteye. ... -
java应用集锦8:使用poi进行excel操作,同时支持excel2003和2007
2011-06-21 21:42 6385下面的这段代码仅仅支持excel2003,要同时支持2007和 ... -
java应用集锦7:日期函数 double精度问题 list和数组等
2010-07-20 17:51 2406转载请注明出处: http://renjie120.itey ... -
java应用集锦6:字符串base64加密解密 MD5加密
2010-07-20 16:56 5545转载请注明出处: http://renjie120.it ... -
java应用集锦5:缓存管理 单例模式 ThreadLocal
2010-07-20 12:06 6377转载请注明出处: http://renjie120.it ... -
java应用集锦4:保存大对象 上传显示进度条
2010-07-20 11:20 3420转载请注明出处: http://renjie120.it ... -
java应用集锦3:正则表达式 excel操作之jxl
2010-07-13 17:20 3240转载请注明出处: http://renjie120.it ... -
java应用集锦1:序列化 操作xml 常见IO
2010-07-12 19:42 1987转载请注明出处: http://renjie120.it ... -
制作可以执行的jar包
2010-06-08 13:41 1186今天试了一下制作可执行的Jar文件的方法。 具体如下: 首 ... -
Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'的解决办法
2010-04-29 11:55 8590exception javax.servlet. ...
相关推荐
Java面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdf...
Java笔试题集锦/JAVA 基础/servlet笔试题目
Java 面试 最新 最全 算法 框架 语言;core java career essentials,542页完整版
JAVA案例开发集锦:分六个压缩卷,请都下载了再解压 第一压缩卷 下完后请把文件名改为:JAVA案例开发集锦[1].part1.rar.rar
Java编程精选集锦
Java经典项目集锦
如何设置Java 2(JDK1.2)的环境变量? 答: Java 2安装后,需要设置PATH和JAVA_HOME环境变量.与JDK1.1不同的是:设置好JAVA_HOME环境变量后,JVM将自动搜索系统类库以及用户的当前路径. Java 2环境变量的设置如下例所示...
JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.JAVA精华集锦.
555应用集锦 555应用集锦 555应用集锦 555应用集锦
该光盘中有《Java案例开发集锦》一书中的所有案例源程序代码,编译通过的实例类代码和工程文件,以及案例中应用的数据库,并有在案例中涉及的相关Java类文件。配书光盘中全部内容包括: 1. chp1-chp10目录。分别...
JAVA案例开发集锦pdf JAVA案例开发集锦pdf JAVA案例开发集锦pdf
Java编程代码实例集锦.Java编程代码实例集锦.Java编程代码实例集锦.Java编程代码实例集锦.chm
如何设置Java 2(JDK1.2)的环境变量? 答: Java 2安装后,需要设置PATH和JAVA_HOME环境变量.与JDK1.1不同的是:设置好JAVA_HOME环境变量后,JVM将自动搜索系统类库以及用户的当前路径. Java 2环境变量的设置如下例所示: ...
java面试题集锦
java案例开发集锦(电子书)
CAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD应用集锦.rarCAD...
一般直流日光灯采用分立元件组成,而这个电路由TWH8751功率开关加几个外围元件组成,电路简单、可靠、效率高,可用于停电时或野外照明。
JAVA案例开发集锦 第四压缩卷 下完后请把文件名改为:JAVA案例开发集锦[1].part4.rar.rar
Java常见问题集锦 Java常见问题集锦Java常见问题集锦
java性能优化集锦java性能优化集锦java性能优化集锦