getDeclaredFields()获取到所有字段后怎么从中取出指定的字段呢
时间: 2024-05-08 19:20:36 浏览: 13
可以使用 `getField(String name)` 方法来获取指定名称的字段。具体步骤如下:
1. 使用 `Class.getDeclaredFields()` 方法获取到该类的所有字段,返回的是一个 Field 类型的数组。
2. 遍历该数组,使用 `Field.getName()` 方法获取每个字段的名称,与指定的字段名称进行比较。
3. 如果名称相同,则使用 `Field.get(Object obj)` 方法获取该字段的值。
下面是一个示例代码:
```java
import java.lang.reflect.Field;
public class MyClass {
private int myField1;
private String myField2;
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MyClass obj = new MyClass();
// 获取所有字段
Field[] fields = MyClass.class.getDeclaredFields();
// 遍历字段数组,查找指定名称的字段
for (Field field : fields) {
if (field.getName().equals("myField2")) {
// 获取指定字段的值
Object value = field.get(obj);
System.out.println(value); // 输出:null
}
}
}
}
```
在上面的示例中,我们获取了 `MyClass` 类的所有字段,并遍历该数组,查找名称为 `myField2` 的字段。最后使用 `Field.get(Object obj)` 方法获取该字段的值,并输出到控制台。由于 `myField2` 字段是一个 `String` 类型的字段,并且没有初始化值,因此输出为 `null`。