用java写一个根据字段名获取obj对象中字段的工具
时间: 2024-05-16 11:16:51 浏览: 24
可以使用Java反射机制实现根据字段名获取对象中字段的值。以下是一个示例代码:
```java
import java.lang.reflect.Field;
public class FieldGetter {
/**
* 根据字段名获取对象中字段的值
*
* @param fieldName 字段名
* @param obj 对象实例
* @return 字段值
*/
public static Object getFieldValue(String fieldName, Object obj) {
try {
// 获取对象的Class
Class<?> clazz = obj.getClass();
// 获取字段
Field field = clazz.getDeclaredField(fieldName);
// 设置字段可访问
field.setAccessible(true);
// 获取字段值
return field.get(obj);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
}
```
使用示例:
```java
public class Test {
private String name = "Tom";
private int age = 18;
public static void main(String[] args) {
Test test = new Test();
String name = (String) FieldGetter.getFieldValue("name", test);
int age = (int) FieldGetter.getFieldValue("age", test);
System.out.println("name: " + name); // 输出:name: Tom
System.out.println("age: " + age); // 输出:age: 18
}
}
```
需要注意的是,如果字段是私有的,需要先调用 `field.setAccessible(true)` 方法,将其设置为可访问的,才能获取到其值。此外,如果字段不存在或者访问不合法,则会抛出 `NoSuchFieldException` 或 `IllegalAccessException` 异常。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)