通过反射动态获取类中字段
import java.lang.reflect.Field;
class User {
private String name;
private int age;
private String addr;
public User() {
}
public User(String name, int age, String addr) {
this.name = name;
this.age = age;
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
public class TestCase {
public static void main(String[] args)
throws IllegalAccessException,
NoSuchFieldException,
InstantiationException {
User user1 = new User("1", 10, "fds");
boolean checkResult = check(user1);
System.out.println(checkResult);
User user2 = new User();
user2.setName("2");
boolean checkResult2 = check(user2);
System.out.println(checkResult2);
User user3 = new User();
boolean checkResult3 = check(user3);
System.out.println(checkResult3);
}
public static boolean check(User user)
throws NoSuchFieldException,
IllegalAccessException,
InstantiationException {
String name = user.getName();
if (null != name) {
Class clz = user.getClass();
Field[] fieldList = clz.getDeclaredFields();
for (Field field : fieldList) {
String fieldName = field.getName();
Field f = clz.getDeclaredField(fieldName);
f.setAccessible(true);
Object o = f.get(user);
if (o == null) {
return false;
}
}
}
return true;
}
}