通过反射获取属性的值
时间: 2023-09-11 12:11:38 浏览: 77
可以通过 Java 的反射机制来获取属性的值。具体操作如下:
1. 获取 Class 对象
可以通过以下两种方式来获取 Class 对象:
- 对象.getClass():获取对象的 Class 对象
- Class.forName("类的全限定名"):通过类的全限定名获取 Class 对象
2. 获取 Field 对象
通过 Class 对象的 getField(String name) 或 getDeclaredField(String name) 方法来获取 Field 对象。getField 方法只能获取 public 修饰的属性,而 getDeclaredField 方法可以获取所有类型的属性,包括 private、protected 和 public。
3. 获取属性的值
通过 Field 对象的 get(Object obj) 方法来获取属性的值。get 方法需要传入一个对象参数,表示要获取该对象的属性值。
示例代码如下:
```java
public class Example {
private int num;
public String str;
}
Class clazz = Example.class;
Example example = new Example();
Field field1 = clazz.getDeclaredField("num");
Field field2 = clazz.getField("str");
field1.setAccessible(true);
int numValue = (int) field1.get(example);
String strValue = (String) field2.get(example);
```
上面的代码中,我们首先获取 Example 类的 Class 对象,然后创建了一个 Example 对象。接着,通过 Class 对象的 getField 和 getDeclaredField 方法获取了类中的两个属性 Field 对象。注意,对于 num 这个属性,我们需要设置其可访问性为 true,才能获取到其值。最后,通过 Field 对象的 get 方法获取了属性的值。