JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。
内省主要用于对JavaBean进行操作
使用内省我们可以简化书写,实现通用性,这里写一个通用的方法,让属性名称为一个变量,假如属性名很多的话,得到属性名后,就可以遍历,然后给他们一一的赋值,这就是内省的魅力。
如果不用反射,那么传统的方式是不可能实现通用的。- import java.beans.IntrospectionException;
- import java.beans.PropertyDescriptor;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import cn.itcast.day08.domain.User;
- public class Demo2 {
- /**
- * @param args
- * @throws IntrospectionException
- * @throws InvocationTargetException
- * @throws IllegalAccessException
- * @throws IllegalArgumentException
- */
- public static void main(String[] args) throws Exception {
- // 内省
-
- User user = new User();
-
- setProperty(user, "name", "wangwu");
- setProperty(user, "age", 11);
-
- System.out.println(user);
- }
-
- // 实现一个通用的方法 为任意的一个javabean的任意属性赋任意值
- public static void setProperty(Object bean, String fieldName, Object value) throws Exception {
- // 创建属性描述器
- PropertyDescriptor descriptor = new PropertyDescriptor(fieldName, bean.getClass());
-
- // 获得 写方法
- Method writeMethod = descriptor.getWriteMethod();
-
- // 调用 写方法
- writeMethod.invoke(bean, value);
- }
- }
复制代码 |