开发过程中,如果有多个业务场景需要对List集合元素的某个值在返回前端时做特殊处理,可以抽取一个公共方法出来,减少冗余代码。
一、定义实体
public class StudentInfoRequestDTO {
private String stuName;
private Integer age;
private String memoId;
}
二、定义工具类
import java.lang.reflect.Field;
import java.util.List;
import java.util.Random;
public class FieldReflectionUtils {
/**
* 给指定字段赋值
*
* @param list
* @param fieldName
* @param clazz
* @param <T>
*/
public static <T> void setFieldValues(List<T> list, String fieldName, Class<T> clazz) {
try {
if (list != null && list.size() != 0) {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
for (T t : list) {
Random r = new Random();
//给元素的指定字段赋值,这里做实际的业务场景
field.set(t, String.valueOf(r.nextInt(100)));
}
}
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
三、运行代码
public static void main(String[] args) {
List<StudentInfoRequestDTO> o = new ArrayList<>();
o.add(new StudentInfoRequestDTO());
o.add(new StudentInfoRequestDTO());
o.add(new StudentInfoRequestDTO());
setFieldValues(o, "memoId", StudentInfoRequestDTO.class);
System.out.println(o);
}