bean类
package com.sg.bean; public class TestBeanReflex { private String x; private String y; public TestBeanReflex(String x, String y) { this.x = x; this.y = y; } public String getX() { return x; } public void setX(String x) { this.x = x; } public String getY() { return y; } public void setY(String y) { this.y = y; } }
测试类
package com.sg.bean; 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; public class IntroSpectorTest { public static void main(String[] args) throws Exception { TestBeanReflex tbr = new TestBeanReflex("3", "5"); String propertyName = "x"; String value = "7"; //获取bean的属性值 Object obj = getProperty(tbr, propertyName); System.out.println(obj); //可以修改bean属性的值 setProperty(tbr, propertyName, value); System.out.println(tbr.getX()); } private static void setProperty(Object tbr, String propertyName, Object value) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor pd = new PropertyDescriptor(propertyName, tbr.getClass()); Method method = pd.getWriteMethod(); method.invoke(tbr, value); } private static Object getProperty(Object tbr, String propertyName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { /*PropertyDescriptor pd = new PropertyDescriptor(propertyName, tbr.getClass()); Method method = pd.getReadMethod(); Object obj = method.invoke(tbr);*/ BeanInfo beanInfo = Introspector.getBeanInfo(tbr.getClass()); //getPropertyDescriptors因为此方法返回的是bean的所有变量 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); Object obj = null; for (PropertyDescriptor pd : pds) { //通过判断可以只获取你想要的 if (pd.getName().equals(propertyName)) { Method method = pd.getReadMethod(); obj = method.invoke(tbr); break; } } return obj; } }
相关推荐
Java反射API主要包括以下几个核心类: 1. **Class类**:每个类在JVM中都有一个对应的Class对象,它包含了类的所有信息。我们可以通过`Class.forName()`或者对象的`getClass()`方法来获取对应的Class对象。 2. **...
在Java中,所有关于反射的操作都在`java.lang.reflect`包下进行。使用反射的基本步骤包括: 1. **获取Class对象**:首先,需要获取目标类的`Class`对象,这是反射操作的起点。 2. **查询成员信息**:使用`Class`...
总的来说,`minimalcode-reflect`是一个专注于JavaBean的反射和内省的框架,它简化了对JavaBean的常规操作,同时也提供了对字节码生成、注解处理和类型操作的支持,为Java开发带来了便利。通过深入理解和使用这个库...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。在Java基础学习中,理解并掌握反射是非常关键的一步,因为这不仅可以帮助你深入理解Java的内在机制,还能提升你在...
Java内省(Introspector)是Java语言提供的一种机制,用于在运行时分析Java对象的属性、方法和事件。这个特性对于开发人员来说非常有用,因为它允许程序动态地检查和修改对象的状态,而不必了解对象的具体实现细节。...
Java 内省(Introspection)是Java提供的一种机制,允许程序在运行时检查对象的属性和方法。...然而,内省也有一些缺点,如性能开销较大,因为每次调用都需要反射操作,所以在对性能要求较高的场景下需谨慎使用。
例如,`BeanHandler`实现了`ResultSetHandler`接口,它可以通过反射机制创建指定类的实例,并使用`ResultSet`中的数据填充JavaBean的属性。`MapHandler`则将结果集转换为Map集合,其中键是列名,值是列对应的值。...
4. **内省和JavaBean原理分析**:内省是Java中用于探测对象属性和方法的技术,本章会介绍JavaBean的基本操作及其内省的复杂应用,利用`BeanUtils`工具进行操作。 5. **注解的了解和应用**:注解是元数据的一种形式...
本PPT旨在帮助对Java有一定基础的开发者进行复习和提升,通过简洁而全面的讲解,促进对关键知识点的理解和应用。 首先,我们来看看Eclipse的使用技巧。Eclipse是一款强大的集成开发环境(IDE),对于Java开发来说至...
课程涵盖了多个关键知识点,包括Eclipse的使用技巧、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、BeanUtils工具包、注解、泛型、类加载器、代理以及线程并发库等。...
- 内省是指通过反射机制操作JavaBean的属性。 - 泛型提供了编译时类型安全检测机制,消除类型转换。 8. **注解(Annotation)**: - 注解是Java中的元数据,用于提供代码的附加信息。 - 讲解了JDK的元注解、...
7. **Commons-beanutils**:通过反射和内省操作JavaBean,简化属性的获取和设置。 8. **Commons-codec**:包含多种编码算法,如Base64、Hex、URL编码等。 9. **Commons-collections**:提供了对Java集合框架的扩展...
4. `commons-beanutils.jar`: Apache Commons BeanUtils库简化了JavaBean操作,通过反射和 introspection(内省)技术,使得操作JavaBean属性更加便捷,这在处理JSON到JavaBean的映射时非常有用。 5. 可能还会有...
6. **BeanUtils工具**:Apache Commons提供的库,简化JavaBean操作。 7. **注解**:元数据,提供编译时和运行时信息,用于代码的自我描述。 8. **泛型**:提高类型安全,避免强制类型转换,减少运行时错误。 9. **类...
eclipse的使用技巧 静态导入 可变参数与for循环增强 基本数据类型的自动拆箱与装箱 枚举 反射 JavaBean内省 beanutils工具包 注解 泛型 类加载器 代理 线程并发库
java基础加强ppt(张孝祥版_黎活明版)eclipse的使用技巧、静态导入、可变参数与for循环增强、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、beanutils工具包、注解、泛型、类加载器、代理、线程并发库
- **项目创建与管理**:通过File > New > Java Project可以创建新的Java项目,并对项目结构进行管理。此外,还可以利用Maven或Gradle等工具进行项目的构建和依赖管理。 - **代码编写与辅助**:Eclipse内置了强大的...