工作中遇到针对API中存在的实体类的非空校验,如果不封装只能一个一个获取再校验。比较麻烦,所以写了个通用工具类,通过反射去实现效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
public void vaildate(Object vo, List<String> parms) { Field[] fields = vo.getClass().getDeclaredFields(); try { for (String validName : parms) { for (Field fi : fields) { fi.setAccessible(true); String name = fi.getName(); if (!validName.equals(name)) continue; String value = fi.get(vo) == null ? "" : fi.get(vo).toString(); if (StringUtils.isBlank(value)) { System.out.println("参数:{"+name+"}值为空"); break; } } } } catch (IllegalArgumentException | IllegalAccessException e) { System.out.println("校验对象失败:{" + vo + "},异常信息:{" + e + "}"); } }
|
调用方式
1 2 3 4 5 6 7 8 9 10 11 12
| @Test public void main() { TestVO vo = new TestVO();
vo.setId(1);
vo.setSf("111"); List<String> parms = Arrays.asList("name", "number"); vaildate(vo, parms);
}
|
实体类参数
1 2 3 4 5 6 7 8 9 10 11 12 13
| private int id; private String name; private String number; private String sf; public int getId() { return id; } public void setId(int id) { this.id = id; } ................................
|
测试结果
1 2 3
| 控制台输出 参数:{name}值为空 参数:{number}值为空
|
代码地址 : 点我
未经允许不得转载: 幻凡ss » java实体对象的非空校验