對象之間的屬性賦值
主要通過org.springframework.beans.BeanUtils.copyProperties方法進行對象之間的屬性賦值。
賦值前提 -- 兩個對象要賦值的屬性名需要保持一致
對象賦值
# 將source對象賦值給target對象
BeanUtils.copyProperties(source, target);
List之間的對象賦值
/**
* @param input 輸入集合
* @param clazz 輸出集合類型
* @param <E> 輸入集合類型
* @param <T> 輸出集合類型
* @return 返回集合
*/
public static <E, T> List<T> convertListToList(List<E> input, Class<T> clazz) {
List<T> output = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(input)) {
for (E source : input) {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target);
output.add(target);
}
}
return output;
}
示例
有以下三個類,User、Cust、Student:
@Data
public class User {
private String name;
private String password;
private String email;
}
@Data
public class Cust {
private String name;
private String password;
private String email;
private String phone;
}
@Data
public class Student {
private String name;
private String password;
}
工具類:
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import java.util.List;
/**
* @Description: 對象之間進行賦值
* @Date: 2020/9/25 9:55
*/
public class AssignmentObject {
/**
* 對象屬性拷貝
* 將源對象的屬性拷貝到目標對象
* @param source 源對象
* @param target 目標對象
*/
public static void copyProperties(Object source, Object target) {
BeanUtils.copyProperties(source, target);
}
/**
* @param input 輸入集合
* @param clazz 輸出集合類型
* @param <E> 輸入集合類型
* @param <T> 輸出集合類型
* @return 返回集合
*/
public static <E, T> List<T> convertListToList(List<E> input, Class<T> clazz) {
List<T> output = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(input)) {
for (E source : input) {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target);
output.add(target);
}
}
return output;
}
}
測試類:分別測試對象之間的屬性賦值與List之間的屬性賦值
public class Demo {
public static void main(String[] args) {
User user = new User();
user.setName("admin");
user.setPassword("admin");
user.setEmail("123@qq.com");
System.out.println("user:" + user);
// 將user的屬性分別賦給cust和student
Cust cust = new Cust();
AssignmentObject.copyProperties(user, cust);
System.out.println("cust:" + cust);
Student student = new Student();
AssignmentObject.copyProperties(user, student);
System.out.println("student:" + student);
User user1 = new User();
user1.setName("demo");
user1.setPassword("demo");
user1.setEmail("demo@qq.com");
System.out.println("user1:" + user);
// 將users賦值給List<Cust>和List<Student>
List<User> users = new ArrayList<>();
users.add(user);
users.add(user1);
System.out.println("users:" + users);
List<Cust> custs = AssignmentObject.convertListToList(users, Cust.class);
System.out.println("custs:" + custs);
List<Student> students = AssignmentObject.convertListToList(users, Student.class);
System.out.println("students:" + students);
}
}