/**
* 使用beanUtils工具包 需要导入第三方jar
* commons-beanutils-1.8.3.jar
* commons-logging-1.1.1.jar
*/
package com.sg.reflex.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; import com.sg.bean.TestBeanReflex; public class TestNeiXing { public static void main(String[] args)throws Exception { TestBeanReflex br = new TestBeanReflex("2", "5"); String propertyName = "x"; String returnValue = getProperty(br, propertyName); System.out.println(returnValue); Object value = "3"; setProperty(br, propertyName, value); System.out.println(br.getX()); /** * 通过BeanUtils操作获取bean属性的值 可以自动将参数类型转换成bean类对应参数的类型 */ System.out.println(BeanUtils.getProperty(br, propertyName)); System.out.println(BeanUtils.getProperty(br, propertyName).getClass().getName());//java.lang.String /** * 通过BeanUtils这是bean属性的值 */ BeanUtils.setProperty(br, propertyName, "5"); System.out.println(br.getX()); /** * 通过BeanUtils操作bean属性的级联操作 */ BeanUtils.setProperty(br, "brithDay.time", "111"); System.out.println(BeanUtils.getProperty(br,"brithDay.time"));//结果111 /** * beanUtils将一个bean转换成一个map对象 */ Map map = BeanUtils.describe(br); /*Iterator iterator = map.entrySet().iterator(); while(iterator.hasNext()){ String key = (String)iterator.next(); map.get(key); } Set set = map.keySet(); for(Object object : set){ System.out.println("key : "+object + "value : " + map.get(object)); }*/ /** * PropertyUtils也具有同样的功能 但是参数值 要与bean的属性的类型一致 */ PropertyUtils.setProperty(br, "z", 9); System.out.println(BeanUtils.getProperty(br, "z"));// System.out.println(BeanUtils.getProperty(br, "z").getClass().getName());// } public static void setProperty(TestBeanReflex br, String propertyName, Object value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor descriptor = new PropertyDescriptor(propertyName, br.getClass()); Method method = descriptor.getWriteMethod(); method.invoke(br, value); } public static String getProperty(TestBeanReflex br, String propertyName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { /*PropertyDescriptor descriptor = new PropertyDescriptor(propertyName, br.getClass()); Method method = descriptor.getReadMethod(); String returnValue = (String)method.invoke(br); return returnValue;*/ //第二种操作 //获取那个javaBean的所有信息 BeanInfo beanInfo = Introspector.getBeanInfo(br.getClass()); //获取那个javaBean的所有属性的信息 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); String returnValue = null; //遍历所有的属性 for(PropertyDescriptor pd : pds){ //获取属性的名字 判断是否和传入的相等 if (pd.getName().equals(propertyName)) { //如果相等就获取它的get方法 Method method = pd.getReadMethod(); returnValue = (String)method.invoke(br); break; } } return returnValue; } }
相关推荐
java基础加强ppt(张孝祥版_黎活明版)eclipse的使用技巧、静态导入、可变参数与for循环增强、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、beanutils工具包、注解、泛型、类加载器、代理、线程并发库
课程涵盖了多个关键知识点,包括Eclipse的使用技巧、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、BeanUtils工具包、注解、泛型、类加载器、代理以及线程并发库等。...
eclipse的使用技巧 静态导入 可变参数与for循环增强 基本数据类型的自动拆箱与装箱 枚举 反射 JavaBean内省 beanutils工具包 注解 泛型 类加载器 代理 线程并发库
`BeanUtils`工具包提供了方便的方法来操作JavaBean。 注解(Annotation)是另一种元数据形式,用于提供有关代码的信息,如元编程、编译时验证和运行时处理。注解可以自定义,也可以使用Java内置的注解,如`@...
Commons项目组中的一个用来处理JavaBean类的反射、内省的工具包,一般的Web开发都需要用到这个包的,个人认为是一个很好的资源。
4. `commons-beanutils.jar`: Apache Commons BeanUtils库简化了JavaBean操作,通过反射和 introspection(内省)技术,使得操作JavaBean属性更加便捷,这在处理JSON到JavaBean的映射时非常有用。 5. 可能还会有...
在实际开发中,我们经常需要对 JavaBean 对象进行操作,例如设置属性值、获取属性值、将 map 封装到 bean 对象中等。BeanUtils 提供了一种简洁的方式来实现这些操作,使得我们的代码更加简洁和易读。 在使用 ...
- **示例代码**:提供使用BeanUtils工具包复制JavaBean属性的具体代码示例。 ### 10. 泛型技术 (Generic) #### 1.17 泛形的作用 - **泛型优势**:解释泛型技术的优势,包括类型安全性和代码复用性等。 - **使用场景...
7. **Commons-beanutils**:通过反射和内省操作JavaBean,简化属性的获取和设置。 8. **Commons-codec**:包含多种编码算法,如Base64、Hex、URL编码等。 9. **Commons-collections**:提供了对Java集合框架的扩展...
- **BeanUtils工具包**:介绍Apache Commons BeanUtils工具包的使用方法,提高对JavaBean的操作效率。 - **内省应用**:结合具体案例,展示内省技术的实际应用价值。 ##### 9. 泛型技术 - **泛型的作用**:阐述泛型...
- **BeanUtils工具包**:Apache Commons BeanUtils提供了一组工具方法来操作JavaBean,如复制属性值、调用getter/setter方法等。 #### 六、泛型技术 泛型是一种在编译时检查类型的机制,它可以避免运行时的类型...
**7.8 内省——BeanUtils 工具包** - **功能**: 提供操作 JavaBean 的便捷方法。 - **操作**: - 属性复制 - 属性获取 **7.9 泛型(Generic)** - **目的**: 在编译时检查类型安全,并允许创建高度可复用的组件。 - ...