public static <R> List<R> copyList(List<?> list, Class<R> clazz) throws IllegalAccessException, InvocationTargetException, InstantiationException { try { List<R> result = new ArrayList<>(list.size()); for (Object source : list) { R dest = clazz.newInstance(); BeanUtils.copyProperties(dest, source); result.add(dest); } return result; }catch (IllegalAccessException|InstantiationException|InvocationTargetException e){ throw e; } }