retain的例子
ArrayList 1: [Google, Runoob, Taobao] ArrayList 2: [Wiki, Runoob, Google] 保留的元素: [Google, Runoob]
/** * 获取对象的属性集合 * @param obj 对象 * @return * @throws IllegalAccessException */ public static List<String> getObjectProperty(Object obj) throws IllegalAccessException { Class<?> clazz=obj.getClass(); //得到类对象 Field[] fs=clazz.getDeclaredFields(); List<String> list=new ArrayList<String>(); for(Field field:fs){ //遍历属性 field.setAccessible(true); //设置属性是可以访问的(私有的也可以) String name=(String)field.getName(); list.add(name); } return list; }}
/** * 返回对象属性为空的属性列表 * @param obj 对象 * @return 对象里面所有的属性过滤保留包涵为空的null和空串"",组成列表返回 * @throws IllegalAccessException */ public static List<String> isObjectFieldEmpty(Object obj) throws IllegalAccessException { Class<?> clazz=obj.getClass(); //得到类对象 Field[] fs=clazz.getDeclaredFields(); List<String> list=new ArrayList<String>(); for(Field field:fs){ //遍历属性 field.setAccessible(true); //设置属性是可以访问的(私有的也可以) if(field.get(obj)==null||field.get(obj)==""||"null".equalsIgnoreCase((String)field.get(obj))){ String name=(String)field.getName(); list.add(name); } } return list; }
/** * 获取必填列表中 为空的 条目 * @param args * @throws IllegalAccessException */ public static void main(String[] args) throws IllegalAccessException { WdSgjsHtzbQzc wdSgjsHtzbQzc = new WdSgjsHtzbQzc(); wdSgjsHtzbQzc.setFPkey("dafda"); wdSgjsHtzbQzc.setFZdbm("434535"); List<String> nullList = null; try { nullList = FileDownloadUtils.isObjectFieldEmpty(wdSgjsHtzbQzc); log.info("---{}", nullList); } catch (Exception e) { e.printStackTrace(); } MinWdSgjsHtzbQzc minWdSgjsHtzbQzc=new MinWdSgjsHtzbQzc(); List<String> objectProperty = FileDownloadUtils.getObjectProperty(minWdSgjsHtzbQzc); objectProperty.retainAll(nullList); log.info("还剩{}",objectProperty); if(objectProperty.size()>0){ // log.error(""+); } }