这是我自己来实现的BeanUtils类,中间常用的几个方法
定义MyBeanUtils工具类, 实现与BeanUtils相同的功能
public static void setProperty(Object bean,String name,Object value)
// 设置任意对象的, 任意属性, 为任意的值
public static String getProperty(Object bean,String name)
// 获取任意对象的任意属性
public static void populate(Object bean,Map map)
// 修改任意对象中的属性, 为传入Map集合中的键和值
Ps: 下个知识点
package com.homework;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Set;
/*
* 自定义工具类BeanUtils:
* static void setProperty(Object bean, String name, Object value)
* get方法
* static String getProperty(Object bean, String name)
* 将map集合中的数据直接映射到p对象中
* static void Property(Object bean, Map map)
*
*/
public class MyUtils {
private MyUtils() {
}
public static void setProperty(Object bean, String name, Object value) throws ReflectiveOperationException {
// 反射调用bean对象的字节码文件
Class<? extends Object> clazz = bean.getClass();
// 获取文件名
Field field = clazz.getDeclaredField(name);
// 暴力反射
field.setAccessible(true);
// 给bean对象的成员赋值
field.set(bean, value);
}
public static String getProperty(Object bean, String name) throws ReflectiveOperationException {
Class clazz = bean.getClass();
Field field = clazz.getDeclaredField(name);
field.setAccessible(true);
Object object = field.get(bean);
return object.toString();
}
public static void Property(Object bean, Map map) throws ReflectiveOperationException {
Class clazz = bean.getClass();
Set keySet = map.keySet();
for (Object key : keySet) {
try {
Field field = clazz.getDeclaredField(key.toString());
field.setAccessible(true);
field.set(bean, map.get(key));
} catch (Exception e) {
// TODO: handle exception
}
}
}
}