java反射设置属性值_Java反射:根据属性名得到其Set方法设置它的值
时间: 2023-08-01 16:12:18 浏览: 359
可以通过Java反射来根据属性名得到其Set方法,然后设置它的值。具体实现步骤如下:
1. 获取类的Class对象,可以使用Class.forName("类的全限定名")方法或者类名.class方式。
2. 获取属性的Field对象,可以使用Class.getDeclaredField("属性名")方法。
3. 获取Set方法的Method对象,Set方法的名称为"set"加上属性名,第一个字母大写。可以使用Class.getMethod("方法名",参数类型)方法,其中方法名为"set"加上属性名,参数类型为属性的类型。
4. 调用Method对象的invoke方法,传入要设置的对象和属性值作为参数,即可完成属性值的设置。
下面是示例代码:
```java
public class ReflectTest {
public static void main(String[] args) throws Exception {
// 获取类的Class对象
Class<?> clazz = Class.forName("com.example.User");
// 获取属性的Field对象
Field field = clazz.getDeclaredField("name");
// 获取Set方法的Method对象
String methodName = "set" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1);
Method method = clazz.getMethod(methodName, field.getType());
// 创建对象
Object obj = clazz.newInstance();
// 调用Set方法设置属性值
method.invoke(obj, "张三");
// 输出属性值
System.out.println(field.get(obj));
}
}
```
上述代码中,我们通过反射的方式获取到了User类的name属性,并且成功设置了它的值为"张三"。
阅读全文