package com.liyadong.utils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;import java.util.stream.Collectors;//实体对象,转换成值对象public class EntityToVoUtils { //反射真是无敌 /** * 单个实体对象转换成VO * @param source 实体对象 * @param clazz VO类 * @param <S> 实体对象类型 * @param <V> VO类型 * @return VO */ public static <S,V> V ETV(S source,Class<V> clazz){ V result = null; try { result = clazz.newInstance(); Class sclazz = source.getClass(); Field[] fs = clazz.getDeclaredFields(); Field[] f1s = sclazz.getDeclaredFields(); for(Field f:fs){ for(Field f1:f1s){ if(f.getName().equals(f1.getName())){ Method m = sclazz.getMethod("get" + f1.getName().substring(0, 1).toUpperCase() + f1.getName().substring(1)); Object value = m.invoke(source); f.setAccessible(true); f.set(result,value); } } } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 实体对象集合转换成VO集合 * @param sources 实体对象集合 * @param clazz VO类 * @param <S> * @param <V> * @return */ public static <S,V> List<V> ETVs(List<S> sources,Class<V> clazz){ List<V> vos = new ArrayList<>(); return sources .stream() .map(o->ETV(o,clazz)) .collect(Collectors.toList()); }}