- 浏览: 237679 次
- 性别:
- 来自: 上海
博客专栏
-
Java应用集锦
浏览量:22905
文章分类
最新评论
-
yipeng_666:
<div class="quote_title ...
基于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 772spring的IOC和AOP是说的最烂的东西,尤其是后者, ... -
关于java web开发中的很多小问题集锦
2017-05-11 11:24 21451、导出excel文件,文件名的中文问题 public ... -
自定义java类重写hashcode和equals方法
2014-12-24 15:34 12631.何时需要重写equals() 当一个类有自 ... -
java的普通类重写hashcode和equals方法
2014-12-24 15:33 0class AddServe { public Stri ... -
解决问题
2013-11-18 22:54 1411启动tomcat的时候,报错如下: java 写道 严 ... -
强烈推荐一个简单而实用的数据库连接池工程
2013-07-15 23:53 1111接触过很多的数据库连接池,有d3p0,druid,都比较nb ... -
自己写的一个jedis操作模板类
2013-07-15 23:28 1415jedis是java的redis客户端程序,在spring下 ... -
打算写一个关于股票的开源小玩意
2013-03-08 23:44 0目标: 1.锻炼自己的编码能力,组织代码的能力 2.为 ... -
java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
2012-11-16 16:03 19948转账注明出处:http://renjie120.iteye. ... -
java应用集锦8:使用poi进行excel操作,同时支持excel2003和2007
2011-06-21 21:42 6466下面的这段代码仅仅支持excel2003,要同时支持2007和 ... -
java应用集锦7:日期函数 double精度问题 list和数组等
2010-07-20 17:51 2443转载请注明出处: http://renjie120.itey ... -
java应用集锦6:字符串base64加密解密 MD5加密
2010-07-20 16:56 5624转载请注明出处: http://renjie120.it ... -
java应用集锦5:缓存管理 单例模式 ThreadLocal
2010-07-20 12:06 6474转载请注明出处: http://renjie120.it ... -
java应用集锦4:保存大对象 上传显示进度条
2010-07-20 11:20 3499转载请注明出处: http://renjie120.it ... -
java应用集锦3:正则表达式 excel操作之jxl
2010-07-13 17:20 3319转载请注明出处: http://renjie120.it ... -
java应用集锦1:序列化 操作xml 常见IO
2010-07-12 19:42 2082转载请注明出处: http://renjie120.it ... -
制作可以执行的jar包
2010-06-08 13:41 1231今天试了一下制作可执行的Jar文件的方法。 具体如下: 首 ... -
Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'的解决办法
2010-04-29 11:55 8711exception javax.servlet. ...
相关推荐
11. **Spring框架**:Spring是一个全面的后端开发框架,包含依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,简化了Java应用的开发。 12. **Java 8新特性**:Java 8引入了Lambda表达式、函数式编程...
12. **反射与注解**:反射是Java动态性的一大体现,注解则为代码提供了元数据,案例可能讲解了它们的使用方法和应用场景。 13. **网络编程**:通过Socket编程,案例可能展示了如何创建客户端和服务端通信的应用,...
Java技术文章集锦是一个丰富的资源库,包含了大量关于Java编程的知识点,对于正在学习或已经从事Java开发的人员来说,这是一个宝贵的参考资料。这个压缩包文件中的每一篇文章都可能涵盖了一个或多个Java技术主题,让...
6. **反射机制**:Java反射允许程序在运行时动态地获取类的信息并操作类的对象,是很多高级功能的基础,如动态代理、序列化等。 7. **JVM内存模型**:理解堆、栈、方法区、本地方法栈等区域的工作原理,以及垃圾...
Java笔试集锦大全是一个汇集了众多Java编程相关面试和笔试问题的资源,旨在帮助学习者和求职者深入了解Java语言的核心概念、技术细节以及常见问题的解决策略。这个压缩包中的"java笔试集锦大全.txt"文件很可能是包含...
"Java案例开发集锦第一版源代码"是一个集合,包含了多个Java编程的实际应用示例,旨在帮助开发者理解和掌握Java的核心概念和技术。这个压缩包很可能是为初学者或有经验的程序员设计的,提供了一个实践学习的资源库。...
9. **反射机制**:反射是Java的一个强大特性,允许程序在运行时动态地获取类的信息并操作类的对象。 10. **Java集合框架**:这包括List、Set、Map接口以及其实现类,考生需理解它们的特点和应用场景。 11. **泛型*...
Java编程精选集锦是一份全面且深入的Java学习资源,旨在帮助那些已经对Java有基本了解的开发者进一步提升他们的技能。这份集锦包含了各种实际应用中的编程实例,旨在通过实践来增强理论知识的理解。以下是对这份资料...
Java作为全球最流行的编程语言之一,其在企业级应用中的地位不言而喻。随着技术的不断迭代,Java开发者需要持续学习和提升自己的技能以适应市场需求。2018年Java面试集锦正是这样一个资源,它包含了当年最新的面试...
Java笔试题经典集锦是针对Java开发者准备的面试和学习资源,主要涵盖了各种典型的编程题目。这份资料旨在帮助应聘者和学习者深入理解Java语言的核心概念、语法特性以及实际问题的解决策略。以下是对这份集锦中可能...
总之,《JAVA学习书籍_java案例开发集锦》是一本全面覆盖JAVA核心概念和实践技能的教材,适合想要深入理解和应用JAVA技术的读者。通过书中的实例,读者不仅可以学习理论知识,还能提升实际编程能力,为成为一名熟练...
《Java案例开发集锦》是一份宝贵的资源,涵盖了Java编程的多个重要方面,旨在帮助开发者深化理解、提高技能。这份集锦中包含了丰富的程序实例,是学习和实践Java技术的理想资料。下面,我们将深入探讨其中可能涉及的...
8. **反射机制**:了解如何在运行时动态获取类信息、创建对象和调用方法,以及反射在实际开发中的应用。 9. **JVM调优**:理解JVM参数设置,如堆大小、新生代和老年代比例、GC策略等,以及如何根据性能需求进行调整...
Java是一种广泛应用的高级编程语言,由Sun Microsystems在1995年发布,其设计目标是实现跨平台的可移植性和高效性。Java以其面向对象的特性、简单的语法、丰富的类库以及内置的安全机制赢得了广大开发者青睐。以下是...
这个"java案例开发集锦"很可能包含了多个Java编程的实际应用案例,旨在帮助学习者深入理解和掌握Java技术。以下是对Java编程的一些核心知识点的详细说明,这些知识点可能会在案例集中体现: 1. **基础语法**:Java...
本压缩包文件“java面试题集锦”包含了多个文档,提供了丰富的Java面试题,旨在帮助求职者全方位提升自己的面试竞争力。 首先,Java基础题是每个面试者必须掌握的,这些题目通常涵盖以下几个方面: 1. **Java语法*...
在Java开发过程中,性能优化是不可或缺的一环,它关乎到应用程序的运行效率、资源消耗以及用户体验。本资料集锦主要涵盖了Java性能...通过对这些知识点的学习和实践,开发者能够构建出更加高效、稳定的Java应用程序。
通过研究“Java小程序集锦”,开发者不仅能巩固基础,还能了解如何将Java的特性应用于实际问题中,提升编程技巧和解决问题的能力。这些小程序就像一个个微缩的实战项目,对于学习和教学Java语言都极具价值。
Java笔试题集锦是针对Java编程语言的一系列面试和笔试问题的集合,旨在帮助学习者和求职者深入了解Java的核心概念、语法以及高级特性。这里,我们将深入探讨这些知识点,涵盖从基础到进阶的各个方面。 一、Java基础...