code: public static <E, S> List<E> copy(List<S> sourceList, Class<E> targetClass) {
          if (sourceList == null || sourceList.isEmpty()) {
              return Collections.emptyList();
          }
          List<E> list = new ArrayList<>(sourceList.size());
  
          if (!(sourceList instanceof ArrayList)) {
              sourceList = new ArrayList<>(sourceList);
          }
  
          for (S source : sourceList) {
              E e = copy(source, targetClass);
              if (e != null) {
                  list.add(e);
              }
          }
          return list;
      }
docs: 将sourceList中的对象与targetClass同名的字段从source中复制到targetClass的实例中，使用前请对参数进行非空校验
  
  @param sourceList  被复制的源对象的数组
  @param targetClass 要复制的目标对象的class对象
  @param <S>         数组中数据的实际类型
  @param <E>         目标对象的实际类型
  @return targetClass的实例的数组