如何通过反射拿到对象的非空有值的属性名 请举例
时间: 2023-05-19 21:03:05 浏览: 63
您可以使用 Java 的反射机制,通过遍历对象的所有属性,判断属性值是否为 null,如果不为 null,则将该属性名添加到一个列表中。以下是一个示例代码:
```java
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class ReflectionExample {
public static void main(String[] args) throws IllegalAccessException {
Person person = new Person("张三", 18, "男", null, "北京市朝阳区");
List<String> nonNullFields = getNonNullFields(person);
System.out.println(nonNullFields);
}
public static List<String> getNonNullFields(Object obj) throws IllegalAccessException {
List<String> nonNullFields = new ArrayList<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.get(obj) != null) {
nonNullFields.add(field.getName());
}
}
return nonNullFields;
}
}
class Person {
private String name;
private int age;
private String gender;
private String phone;
private String address;
public Person(String name, int age, String gender, String phone, String address) {
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.address = address;
}
}
```
在上面的示例中,我们定义了一个 Person 类,其中包含了五个属性,其中 phone 属性的值为 null。我们通过调用 getNonNullFields 方法,传入一个 Person 对象,即可得到该对象中非空有值的属性名列表。在这个例子中,输出结果为 [name, age, gender, address]。