通过反射实现类各字段的判空校验
package com.example.alldemo.ifelse;
/**
* @Author: 张涛
* @Date: 2020/1/16 13:49
* @Content:
*/
public class User {
private String name;
private Integer age;
public User() {
}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
package com.example.alldemo.ifelse;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
/**
* @Author: 张涛
* @Date: 2020/1/16 10:15
* @Content:
*/
public class utils {
/**
*获取类中所有属性名称
* @param obj
* @return
*/
public static String[] getClassAllAttribute(Object obj) {
Class classObj = (Class) obj.getClass();
Field[] fields = classObj.getDeclaredFields();
String[] title = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
title[i] = fields[i].getName();
}
return title;
}
/**
* 属性名称判断是否为必要参数
* @param fieldName
* @param obj
* @param notNullFieldNames
* @return
*/
public static Boolean getClassAttributeValue(String fieldName, Object obj, List notNullFieldNames) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = obj.getClass().getMethod(getter, new Class[]{});
Object value = method.invoke(obj, new Object[]{});
if (value == null) {
for(Object notNullFieldName:notNullFieldNames){
if (fieldName.equals(notNullFieldName.toString())) {
return false;
}
}
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 判断必要参数是否为空
* @param user
* @param notNullFieldNames 必要参数名称数组
* @return
*/
public static Boolean classIsNull(User user, List notNullFieldNames) {
Boolean b = true;
String[] strings = getClassAllAttribute(user);
for (String name : strings) {
b = getClassAttributeValue(name, user, notNullFieldNames);
if (!b) {
return false;
}
}
return b;
}
public static void main(String[] args) {
User user = new User("123");
user.setAge(11);
List list = new ArrayList();
list.add("age");
list.add("name");
System.out.println(classIsNull(user, list));
}
}
在list中加入需要验证的字段名称,就可以对字段进行判空了
返回值是一个布尔值,如果验证字段都不为空则为true