java获取对象中不为null的属性
时间: 2024-05-16 17:14:03 浏览: 15
可以通过反射来获取对象中不为null的属性,代码如下:
```java
public static List<String> getNotNullFields(Object obj) throws IllegalAccessException {
List<String> fieldList = new ArrayList<>();
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.get(obj) != null) {
fieldList.add(field.getName());
}
}
return fieldList;
}
```
这个方法接收一个对象作为参数,使用反射获取对象中的所有属性,并且判断属性值是否为null,如果不为null,则将属性名称添加到一个集合中并返回。注意,为了能够访问私有属性,需要先将属性的可访问性设置为true,即调用`field.setAccessible(true)`。
相关问题
java获取对象中不为null的属性以及属性值
可以通过反射的方式获取对象中不为null的属性以及属性值,具体实现步骤如下:
1. 使用Class类的getDeclaredFields方法获取对象中所有的属性。
2. 遍历属性数组,利用Field类的get方法获取属性值。
3. 判断属性值是否为null,如果不为null则将属性名和属性值存入Map中。
4. 返回Map。
以下是示例代码:
```java
public static Map<String, Object> getNotNullFields(Object obj) throws IllegalAccessException {
Map<String, Object> map = new HashMap<>();
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(obj);
if (value != null) {
map.put(field.getName(), value);
}
}
return map;
}
```
调用示例:
```java
User user = new User();
user.setName("张三");
user.setAge(20);
user.setAddress(null);
Map<String, Object> map = getNotNullFields(user);
System.out.println(map); // 输出: {name=张三, age=20}
```
注意:以上代码仅适用于获取对象中的成员变量,如果需要获取对象中的getter方法返回值,则需要使用Java的反射机制调用get方法获取返回值。
将对象不为null的属性转为map
假设你有一个Java对象,需要将其所有非空属性转换为Map。可以通过反射实现这个功能。以下是一个示例代码:
```java
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
Map<String, Object> map = new HashMap<>();
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(obj);
if (value != null) {
map.put(field.getName(), value);
}
}
return map;
}
```
这个代码使用了Java的反射机制,首先获取对象的所有属性,然后遍历每个属性。通过 `field.setAccessible(true)` 设置属性为可访问状态,然后通过 `field.get(obj)` 获取属性的值。如果属性值不为null,将属性名和属性值存入Map中。最后返回这个Map即可。
相关推荐
![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)