field.get(obj)
时间: 2024-10-16 21:09:48 浏览: 0
`field.get(obj)` 是Java反射API中常用的一个方法,它用于从给定的对象`obj`中获取指定字段的值。`field`是一个代表对象内部某个属性的`Field`对象,这个方法会在`obj`上查找并返回相应字段对应的变量值。
例如,假设有一个`Person`类,其中有个名为`name`的私有字段:
```java
public class Person {
private String name;
// getters and setters...
}
```
你可以通过以下方式获取这个`name`字段的值:
```java
Person person = new Person();
String nameValue = person.getClass().getDeclaredField("name").get(person);
System.out.println(nameValue); // 输出 person 的名字
```
这里,`field.getDeclaredField("name")` 获取了`Person`类中名为`name`的字段,`field.get(person)`则是将这个字段应用到`person`实例上,获取其实际存储的值。
需要注意的是,由于`get()`方法默认访问权限是私有的,所以在直接使用它之前,通常需要通过`setAccessible(true)`设置字段为可访问,特别是在处理私有字段的时候。
相关问题
Field.get
`Field.get()` 是 Java 反射 API 中的一个方法,用于获取某个对象中指定字段的值。它需要传入两个参数:第一个参数是要获取字段值的对象,第二个参数是表示要获取的字段名称的字符串。如果该字段是非公有的,还需要先通过 `setAccessible(true)` 方法设置该字段为可访问的。
示例代码:
```
public class MyClass {
private int myField = 42;
}
public class Main {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Field field = obj.getClass().getDeclaredField("myField");
field.setAccessible(true);
int value = field.get(obj);
System.out.println(value); // 输出 42
}
}
```
Object obj = field.get(person);
这段代码是通过反射获取一个对象(person)的某个属性(field)的值,并将其赋给一个Object类型的变量obj。其中,field是一个Field对象,可以通过调用person.getClass().getDeclaredField(fieldName)方法获取,其中fieldName是属性名。get方法是Field类的一个方法,用于获取该属性在指定对象上的值。由于该属性的类型不确定,因此使用Object类型来接收。