Java對象之間的屬性賦值


對象之間的屬性賦值

主要通過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);

    }

}

參考文章:
CSDN:使用BeanUtils.copyProperties進行對象之間的屬性賦值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM