java 反射获取对象属性并调用set方法赋值的示例
时间: 2023-04-03 14:02:04 浏览: 169
可以使用以下代码实现:
```java
// 获取对象的 Class 对象
Class<?> clazz = obj.getClass();
// 获取属性名为 "propertyName" 的属性
Field field = clazz.getDeclaredField("propertyName");
// 设置属性可访问
field.setAccessible(true);
// 获取属性的类型
Class<?> fieldType = field.getType();
// 根据属性类型获取对应的 set 方法名
String methodName = "set" + fieldType.getSimpleName();
// 获取 set 方法
Method method = clazz.getDeclaredMethod(methodName, fieldType);
// 调用 set 方法设置属性值
method.invoke(obj, value);
```
其中,obj 是要设置属性的对象,propertyName 是要设置的属性名,value 是要设置的属性值。
相关问题
java 反射获取对象所有属性 并且给所有属性赋值 示例
可以使用 Java 反射机制中的 Field 类和 Method 类来获取对象的属性和方法,然后通过 set 方法来给属性赋值。具体实现可以参考以下代码:
```java
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
field.set(obj, value);
}
```
其中,obj 为要操作的对象,value 为要赋的值。需要注意的是,如果属性是私有的,需要先调用 setAccessible(true) 方法来设置可访问性。
java 反射给对象新增属性并赋值
Java反射可以通过调用set方法给对象新增属性并赋值。具体步骤如下:
1. 获取Class对象,可以使用Class.forName()方法或者类的.class属性获取。
2. 使用Class对象的getDeclaredField()方法获取指定名称的属性对象。
3. 设置属性对象的访问权限,使用Field对象的setAccessible(true)方法。
4. 使用Field对象的set()方法给属性赋值。
示例代码如下:
```
public class Person {
private String name;
private int age;
// getter and setter
}
public static void main(String[] args) throws Exception {
// 获取Person类的Class对象
Class<?> clazz = Class.forName("com.example.Person");
// 创建Person对象
Person person = new Person();
// 获取name属性的Field对象
Field nameField = clazz.getDeclaredField("name");
// 设置属性的访问权限
nameField.setAccessible(true);
// 给属性赋值
nameField.set(person, "张三");
// 获取age属性的Field对象
Field ageField = clazz.getDeclaredField("age");
// 设置属性的访问权限
ageField.setAccessible(true);
// 给属性赋值
ageField.set(person, 18);
// 输出属性值
System.out.println(person.getName()); // 输出:张三
System.out.println(person.getAge()); // 输出:18
}
```
阅读全文