欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何將map數(shù)據(jù)存入到實體類對象中

 更新時間:2024年09月23日 09:29:53   作者:??悲宸???  
在Java編程中,經(jīng)常需要將Map集合中的數(shù)據(jù)轉(zhuǎn)換為實體類對象,這可以通過反射機(jī)制實現(xiàn),即通過遍歷Map對象,使用反射根據(jù)鍵名對應(yīng)實體類的屬性名,動態(tài)調(diào)用setter方法將值設(shè)置到實體對象中,這樣的操作使得數(shù)據(jù)從Map結(jié)構(gòu)轉(zhuǎn)移到了具體的JavaBean中,便于后續(xù)的操作和管理

將map數(shù)據(jù)存入到實體類對象中

實體類代碼

(這里我們創(chuàng)建的User實體類)

public class User {
    //實體類屬性
    private String name;
    private String psw;
    private String email;
    private String tel;
    //1,toString方法
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", psw='" + psw + '\'' +
                ", email='" + email + '\'' +
                ", tel='" + tel + '\'' +
                '}';
    }
    //2,構(gòu)造方法(無參構(gòu)造,有參構(gòu)造)
    public User() {
    }

    public User(String name, String psw, String email, String tel) {
        this.name = name;
        this.psw = psw;
        this.email = email;
        this.tel = tel;
    }
    //3,getter  setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPsw() {
        return psw;
    }

    public void setPsw(String psw) {
        this.psw = psw;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }
}

測試類代碼

 @Test	//這里我用的是單元測試方法,比較方便
    public void test1(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","貂蟬");
        map.put("psw","666");
        map.put("email","123456789@qq.com");
        map.put("tel","123456789");

        //調(diào)用方法
        User user = mapToBean(map, User.class);
        System.out.println(user);
    }
    //將map中的鍵值對,封裝進(jìn)實體對象屬性中
    public <T> T mapToBean( HashMap<String, Object> map,Class<T> c){
        //  <T> T     這里不確定返回值類型,寫一個泛型類型,作為返回值

        //  HashMap<String, Object> map,Class<T> c
        //  這里在方法中傳兩個參數(shù),一個是map集合,另一個是實體類,
        //  但是實體類不確定,會一直變動,所以傳遞一個Class類作為參數(shù)類型,可以拿到所有的實體類

        try {
            T t = c.newInstance();      //拿到實體類對象
            //1,拆開map,給對象t的屬性賦值
            Set<Map.Entry<String, Object>> entries = map.entrySet();
            for (Map.Entry<String, Object> entry : entries) {
                Field f = c.getDeclaredField(entry.getKey());
                f.setAccessible(true);  //設(shè)置修改權(quán)限,因為我們采用的封裝private,不修改權(quán)限的話,就不能修改實體類中的屬性值
                f.set(t,entry.getValue());  //傳遞參數(shù),第一個為實體類對象,第二個為map集合中的value值
            }
            //2,構(gòu)建一個實體對象并返回
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("出錯啦!"); //將異常放大,可不用寫返回值
        }
    }

運(yùn)行效果

如果你創(chuàng)建的不是User實體類,將下面代碼改成你的實體類,map集合中的數(shù)據(jù)改成你想要的數(shù)據(jù),就可以了

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論