为什么这个方法不能给一个Person类的年龄属性age 赋值?- import java.lang.reflect.Method;
- public class FiledsUntil {
- private FiledsUntil(){}
- // 为一个对象的属性赋值 name setName age setAge
- public static void setProperty(Object obj, String fieldName, Object value) throws Exception {
- // 1. 通过obj对象获得类型 Class对象
- Class clazz = obj.getClass();
- // 2. 解析字段,但是字段通常私有,应该去反射 setXxx 方法
- // 拼写方法名称
- String setMethodName = "set" + String.valueOf(fieldName.charAt(0)).toUpperCase() + fieldName.substring(1);
- System.out.println(setMethodName);
- // 获得参数类型
- Class paramType = value.getClass();
- // 反射 Method
- Method setMethod = clazz.getMethod(setMethodName, paramType);
- // 3. 调用 setXxx 方法赋值
- setMethod.invoke(obj, value);
- }
- }
复制代码 |