java 反射后给字段赋值
时间: 2023-07-20 12:19:36 浏览: 91
在Java中使用反射机制给字段赋值,可以使用Field类的set()方法。该方法有两个参数,第一个参数是要设置值的对象实例,第二个参数是要赋的值。
以下是一个简单的示例程序,演示如何使用反射机制给一个字符串类型的字段赋值:
```java
import java.lang.reflect.Field;
public class FieldSetValueDemo {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MyClass obj = new MyClass();
Field field = MyClass.class.getDeclaredField("fieldName");
field.setAccessible(true); // 设置可访问
field.set(obj, "Hello, World!");
System.out.println(obj.getFieldName()); // 输出 Hello, World!
}
}
class MyClass {
private String fieldName;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
}
```
在上述示例中,我们首先创建了一个MyClass对象。然后,我们使用反射机制获取该对象的fieldName字段,并使用setAccessible()方法将其设置为可访问的。接下来,我们使用Field类的set()方法给该字段赋值为“Hello, World!”。最后,我们调用MyClass对象的getFieldName()方法获取该字段的值,并输出结果。
需要注意的是,在调用Field类的set()方法前,需要先将该字段设置为可访问的,否则会抛出IllegalAccessException异常。可以通过调用Field类的setAccessible()方法,将字段设置为可访问的。
阅读全文