public static <T> List<T> copyToList(Collection<?> collection, Class<T> targetType, CopyOptions copyOptions) {
		if (null == collection) {
			return null;
		}
		if (collection.isEmpty()) {
			return new ArrayList<>(0);
		}

		// issue#3091
		if(ClassUtil.isBasicType(targetType) || String.class == targetType){
			return Convert.toList(targetType, collection);
		}

		return collection.stream().map((source) -> {
			final T target = ReflectUtil.newInstanceIfPossible(targetType);
			copyProperties(source, target, copyOptions);
			return target;
		}).collect(Collectors.toList());
	}
@Test
	public void copyListTest() {
		final Student student = new Student();
		student.setName("张三");
		student.setAge(123);
		student.setNo(3158L);

		final Student student2 = new Student();
		student.setName("李四");
		student.setAge(125);
		student.setNo(8848L);

		final List<Student> studentList = ListUtil.of(student, student2);
		final List<Person> people = BeanUtil.copyToList(studentList, Person.class);

		assertEquals(studentList.size(), people.size());
		for (int i = 0; i < studentList.size(); i++) {
			assertEquals(studentList.get(i).getName(), people.get(i).getName());
			assertEquals(studentList.get(i).getAge(), people.get(i).getAge());
		}

	}