- 浏览: 2290840 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
部门代码来源于传智播客张孝祥老师的代码
视频下载:http://www.itcast.cn/video
视频下载:http://www.itcast.cn/video
import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; /** * 问题:JDK5中不能传递二个可变参数,如:methodInvoke()方法 * */ public class ReflectUtils { /** * 通过构造函数实例化对象 * @param className 类的全路径名称 * @param parameterTypes 参数类型 * @param initargs 参数值 * @return */ @SuppressWarnings("rawtypes") public static Object constructorNewInstance(String className,Class [] parameterTypes,Object[] initargs) { try { Constructor<?> constructor = (Constructor<?>) Class .forName(className).getDeclaredConstructor(parameterTypes); //暴力反射 constructor.setAccessible(true); return constructor.newInstance(initargs); } catch (Exception ex) { throw new RuntimeException(); } } /** * 暴力反射获取字段值 * @param fieldName 属性名 * @param obj 实例对象 * @return 属性值 */ public static Object getFieldValue(String propertyName, Object obj) { try { Field field = obj.getClass().getDeclaredField(propertyName); field.setAccessible(true); return field.get(obj); } catch (Exception ex) { throw new RuntimeException(); } } /** * 暴力反射获取字段值 * @param propertyName 属性名 * @param object 实例对象 * @return 字段值 */ public static Object getProperty(String propertyName, Object object) { try { PropertyDescriptor pd = new PropertyDescriptor(propertyName,object.getClass()); Method method = pd.getReadMethod(); return method.invoke(object); //其它方式 /*BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass()); PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); Object retVal = null; for(PropertyDescriptor pd : pds){ if(pd.getName().equals(propertyName)) { Method methodGetX = pd.getReadMethod(); retVal = methodGetX.invoke(object); break; } } return retVal;*/ } catch (Exception ex) { throw new RuntimeException(); } } /** * 通过BeanUtils工具包获取反射获取字段值,注意此值是以字符串形式存在的,它支持属性连缀操作:如,.对象.属性 * @param propertyName 属性名 * @param object 实例对象 * @return 字段值 */ public static Object getBeanInfoProperty(String propertyName, Object object) { try { return BeanUtils.getProperty(object, propertyName); } catch (Exception ex) { throw new RuntimeException(); } } /** * 通过BeanUtils工具包获取反射获取字段值,注意此值是以字符串形式存在的 * @param object 实例对象 * @param propertyName 属性名 * @param value 字段值 * @return */ public static void setBeanInfoProperty(Object object,String propertyName,String value) { try { BeanUtils.setProperty(object, propertyName,value); } catch (Exception ex) { throw new RuntimeException(); } } /** * 通过BeanUtils工具包获取反射获取字段值,注意此值是以对象属性的实际类型 * @param propertyName 属性名 * @param object 实例对象 * @return 字段值 */ public static Object getPropertyUtilByName(String propertyName, Object object) { try { return PropertyUtils.getProperty(object, propertyName); } catch (Exception ex) { throw new RuntimeException(); } } /** * 通过BeanUtils工具包获取反射获取字段值,注意此值是以对象属性的实际类型,这是PropertyUtils与BeanUtils的根本区别 * @param object 实例对象 * @param propertyName 属性名 * @param value 字段值 * @return */ public static void setPropertyUtilByName(Object object,String propertyName,Object value) { try { PropertyUtils.setProperty(object, propertyName,value); } catch (Exception ex) { throw new RuntimeException(); } } /** * 设置字段值 * @param obj 实例对象 * @param propertyName 属性名 * @param value 新的字段值 * @return */ public static void setProperties(Object object, String propertyName,Object value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor pd = new PropertyDescriptor(propertyName,object.getClass()); Method methodSet = pd.getWriteMethod(); methodSet.invoke(object,value); } /** * 设置字段值 * @param propertyName 字段名 * @param obj 实例对象 * @param value 新的字段值 * @return */ public static void setFieldValue(Object obj,String propertyName,Object value) { try { Field field = obj.getClass().getDeclaredField(propertyName); field.setAccessible(true); field.set(obj, value); } catch (Exception ex) { throw new RuntimeException(); } } /** * 设置字段值 * @param className 类的全路径名称 * @param methodName 调用方法名 * @param parameterTypes 参数类型 * @param values 参数值 * @param object 实例对象 * @return */ @SuppressWarnings("rawtypes") public static Object methodInvoke(String className,String methodName,Class [] parameterTypes,Object [] values,Object object) { try { Method method = Class.forName(className).getDeclaredMethod(methodName,parameterTypes); method.setAccessible(true); return method.invoke(object,values); } catch (Exception ex) { throw new RuntimeException(); } } } /** * @param <T> 具体对象 * @param fileds 要进行比较Bean对象的属性值集合(以属性值为key,属性注释为value,集合从数据库中取出) * @param oldBean 源对象 * @param newBean 新对象 * @return 返回二个Bean对象属性值的异同 */ public static <T> String compareBeanValue(Map<String,String> fileds,T oldBean,T newBean){ StringBuilder compares = new StringBuilder(); String propertyName = null; Object oldPropertyValue = null; Object newPropertyValue = null; StringBuilder descrips = new StringBuilder(); for(Map.Entry<String, String> entity : fileds.entrySet()){ //获取新旧二个对象对应的值 propertyName = entity.getKey().toLowerCase(); oldPropertyValue = getProperty(propertyName, oldBean); newPropertyValue = getProperty(propertyName, newBean); if(null == oldPropertyValue && null == newPropertyValue){ continue; } if("".equals(oldPropertyValue) && "".equals(newPropertyValue)){ continue; } if(null == oldPropertyValue){ oldPropertyValue = ""; } if(null == newPropertyValue){ newPropertyValue = ""; } if(oldPropertyValue.equals(newPropertyValue)){ continue; } compares.append("字段注释: ").append(entity.getValue()).append("】").append("原属性值\""); if(StringUtils.isEmpty(oldPropertyValue+"")){ oldPropertyValue = " "; } compares.append(oldPropertyValue).append("\"现属性值\""); if(StringUtils.isEmpty(newPropertyValue+"")){ newPropertyValue = " "; } compares.append(newPropertyValue).append("\";"); } return compares.toString(); }
- commons-logging-1.1.1.jar (59.4 KB)
- 下载次数: 69
- commons-beanutils-1.8.2.jar (226.5 KB)
- 下载次数: 90
- Java反射工具类.rar (16.5 KB)
- 下载次数: 220
发表评论
-
java json-lib & jQuery & jsonp
2016-06-30 11:31 834参考链接: 1、http://hanqunfeng.iteye ... -
随机分配算法(Intege)
2016-01-08 13:05 5205参考资料: http://blog.csdn.net/yaer ... -
XSS之xssprotect
2012-12-07 23:03 29498参考资料 1 跨网站脚本 ... -
Java之Thread(线程题)
2011-10-31 12:33 1980特别说明:java线程相关的参考了张孝祥老师的代码 参考资料 ... -
Java之ThreadLocal(Synchronized)
2011-10-31 10:10 2698参考资料 1 深入研究java.lang.ThreadLoca ... -
Java之synchronized,wait,notify结合运用示例
2011-10-26 11:54 5941场景一:要求二个线程各 ... -
Java之synchronized深入应用
2011-10-23 08:03 1950参考资料 1 java synchronized详解 http ... -
Java之Timer入门
2011-10-11 15:32 1700参考资料 1 java中timer用 ... -
Java之线程(匿名内部类)
2011-10-10 16:36 164421 Thread对象 Thread t = new Thr ... -
Java之线程(join)
2011-10-10 15:39 1487运用场景:多个线程之间 ... -
Java之线程(synchronized,wait(),notify(),notifyAll())
2011-10-10 15:03 3259参考资料 Java多线程入门大全(适用于有一定基础者) htt ... -
Java之线程(sleep,线程名)
2011-10-10 13:09 9720参考资料 1 Java线程:创建与启动 http://lava ... -
Java之线程入门
2011-10-10 11:11 1540参考资料 1 Java线程:概 ... -
java之表反向生成类
2011-09-23 16:41 3489环境:XP+JDK1.5+Oracle10g 注意事项 1 请 ... -
java之线程, NIO学习资料
2011-09-19 12:13 1140Concurrent In Java 6 第一部分 集合 ... -
Java之BigDecimal
2011-09-15 10:12 18039参考资料 1 java.math.BigDecimal的用法 ... -
java.lang.OutOfMemoryError异常解决方法
2011-08-27 16:47 2117转载:java.lang.OutOfMemoryError异常 ... -
Jcom之jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=
2011-08-25 12:33 11751参考资料 java应用jcom将word转pdf http:/ ... -
Quartz之AnnualCalendar
2011-08-11 17:14 5825问题1 我想排除一年中 ... -
Quartz之InterruptableJob
2011-08-11 11:03 11785问题1 由于业务需要,停止Quartz中正在执行的任务 Qua ...
相关推荐
该工具类下载后拷贝到你要用的包,只需该包名即可
一个Java反射工具类,可以完成查询字段值以及设置字段值的功能。
java的泛型和反射机制一直很难理解和应用,这个程序是关于反射和泛型的综合使用,主要实现获取一个类的属性名和方法,并可以获取属性值,存取属性值,属性名和属性值的字符...只是个工具类,没有写测试类,自己测试下啊
ReflectUtil java反射工具类
这个“Java反射调用工具类”可能是为了简化和封装这些复杂的反射操作而创建的一个实用工具类。 首先,`JobProxy.java`可能是一个代理类,它利用反射来动态地调用目标对象的方法。在Java中,代理模式通常用于在不...
java 反射工具类,适用于框架开发、平台建设等项目
反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息。这个特性使得Java具备了高度的灵活性,能够在运行时动态地发现和使用类的属性和方法,即使这些信息在编译时...
使用java 反射 将HttpServletRequest 中页面参数动态的注入到 javabean对象的辅助工具类,觉得还不错!
反射技术集合,针对对象的反射操作,包含:判断对象属性是否为空、清空对象、读取设置属性等等,比较实用
java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具...
进行数据库查询操作经常用到,包括getDeclaredField、getDeclaredMethod、getFieldValue、getSuperClassGenricType、getSuperGenericType、invokeMethod、makeAccessible、setFieldValue
java组件开发(13)反射工具类
6. **反射API**:Java反射机制允许程序在运行时动态地获取类的信息(如类名、方法名)并调用它们,这在配置文件驱动的应用、插件系统和单元测试中十分有用。 7. **异常处理**:`Exception`类及其子类构成了Java的...
JavaUtils工具类是Java开发中常见的一类辅助代码集合,它们通常包含各种静态方法,用于简化常见的编程任务,提高开发效率。这篇博文链接(已提供但无法直接访问)可能详细探讨了JavaUtils工具类的设计原则、常用方法...
3. **Apache Commons Lang**:Apache软件基金会的一个开源项目,提供了大量扩展Java语言特性的工具类,如字符串处理、数组操作、反射、枚举操作等。 - `StringUtils`:提供了丰富的字符串操作方法,如空白字符处理...
"java常用工具类"这个主题涵盖了Java开发中常用的类和方法,这些工具类可以帮助我们简化编程工作,提高代码的可读性和可维护性。在Java中,`java.util`包就是这样一个包含大量工具类的包,提供了很多实用的功能。 1...