判断对象是否为空 public static boolean checkObjAllFieldsIsNull(Object object) { if (null == object) { return true; } try { for (Field f : object.getClass().getDeclaredFields()) { //f.setAccessible(true); 在用反射时可以访问私有变量 f.setAccessible(true); System.out.print(f.getName() + ":"); System.out.println(f.get(object)); if (f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) { return false; } } } catch (Exception e) { e.printStackTrace(); } return true; }
使用if判断null就不需要取差集了
public Map<String, String> checkObjAllFieldsIsNull(Object object, Object object1) { try { Map<String, String> map = new HashMap<>(); //原始值 String s = ""; //修改后 String s1 = ""; for (Field f : object.getClass().getDeclaredFields()) { //f.setAccessible(true); 在用反射时可以访问私有变量 f.setAccessible(true); for (Field f1 : object1.getClass().getDeclaredFields()) { f1.setAccessible(true); //todo f.getName().equals(f1.getName()) && !f.get(object).equals(f1.get(object1)) NULL异常 boolean flag = false; if (f.getName().equals(f1.getName())) { if (f.get(object) != null && f1.get(object1) != null) { if (!f.get(object).equals(f1.get(object1))) { flag = true; } } else if (f.get(object) == null && f1.get(object1) != null) { flag = true; } else if (f.get(object) != null && f1.get(object1) == null) { flag = true; } if (flag) { String ss = f1.getName() + ":" + f1.get(object1); s = StringUtils.isEmpty(s) ? s + ss : s + "," + ss; String ss1 = f.getName() + ":" + f.get(object); s1 = StringUtils.isEmpty(s1) ? s1 + ss1 : s1 + "," + ss1; } } } } if (StringUtils.isEmpty(s) && StringUtils.isEmpty(s1)) { return null; } map.put("原始值", s); map.put("修改后", s1); return map; } catch (Exception e) { e.printStackTrace(); } return null; }
取两个对象差值
public Map<String, String> checkObjAllFieldsIsNull(Object object, Object object1) { try { Map<String, String> map = new HashMap<>(); //原始值 String s = ""; //修改后 String s1 = ""; for (Field f : object.getClass().getDeclaredFields()) { //f.setAccessible(true); 在用反射时可以访问私有变量 f.setAccessible(true); for (Field f1 : object1.getClass().getDeclaredFields()) { f1.setAccessible(true); //todo f.getName().equals(f1.getName()) && !f.get(object).equals(f1.get(object1)) NULL异常 if (f.getName().equals(f1.getName()) && f.get(object) != f1.get(object1)) { System.out.println(f1.getName() + ":" + f1.get(object1)); System.out.println(f.getName() + ":" + f.get(object)); String ss = f1.getName() + ":" + f1.get(object1); s = StringUtils.isEmpty(s) ? s + ss : s + "," + ss; String ss1 = f.getName() + ":" + f.get(object); s1 = StringUtils.isEmpty(s1) ? s1 + ss1 : s1 + "," + ss1; } } } if (StringUtils.isEmpty(s) && StringUtils.isEmpty(s1)) { return null; } map.put("原始值", s); map.put("修改后", s1); return map; } catch (Exception e) { e.printStackTrace(); } return null; }
使用!=需要取差集来得到值
public static void main(String[] args) { String s1 = "waybillHeadId:652849015356141568,orderNo:null,trackNo:null,currency:502,grossWeight:24.00000,netWeight:0.8,volume:0.00500,goodsValue:60.0,insuredFee:0.0,totalFreightInsured:0.0,remark:null,updateUser:1427877042061351,customsClearance:null"; String s2 = "waybillHeadId:652849015356141568,orderNo:110,trackNo:,currency:502,grossWeight:24,netWeight:0.8,volume:0.005,goodsValue:60,insuredFee:0,totalFreightInsured:0,remark:,updateUser:1427877042061351,customsClearance:"; String[] split = s1.split(","); String[] split1 = s2.split(","); List<String> list = Arrays.asList(split); List<String> list1 = Arrays.asList(split1); List<String> collect = list.stream().filter(num -> !list1.contains(num)) .collect(Collectors.toList()); String collect2 = collect.stream().map(String::valueOf).collect(Collectors.joining(",")); System.out.println(collect2); List<String> collect1 = list1.stream().filter(num -> !list.contains(num)) .collect(Collectors.toList()); String collect3 = collect1.stream().map(String::valueOf).collect(Collectors.joining(",")); System.out.println(collect3); }