package com.yanzuoguang.util.base; import com.yanzuoguang.util.helper.StringHelper; import java.util.HashMap; import java.util.Map; /** * 遍历对象和值 * * @author 颜佐光 */ public class ObjectEach { /** * 遍历对象 * * @param target 对象 * @param consumer 消费者,其中包含名称,值,方法(map时为空) */ public static void each(Object target, ObjectEachItem<String, Object, MethodField> consumer) { if (target instanceof Map<?,?>) { eachMap((Map<?,?>) target, consumer); } else { eachObject(target, consumer); } } /** * 遍历map对象 * * @param target 目标对象 * @param consumer 遍历的字段,值,方法 */ private static void eachMap(Map<?,?> target, ObjectEachItem<String, Object, MethodField> consumer) { for (Object key : target.keySet()) { Object fromValue = target.get(key); consumer.accept(StringHelper.toString(key), fromValue, null); } } /** * 遍历对象 * * @param target 目标对象 * @param consumer 遍历的字段,值,方法 */ private static void eachObject(Object target, ObjectEachItem<String, Object, MethodField> consumer) { HashMap<String, MethodField> mapField = ObjectHelper.getTypeField(target.getClass()); for (Map.Entry<String, MethodField> field : mapField.entrySet()) { String name = field.getValue().getName(); Object fromValue = ObjectHelper.get(target, name); consumer.accept(name, fromValue, field.getValue()); } } }