亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將值從一個 Java 類復制到具有相同屬性的另一個類

如何將值從一個 Java 類復制到具有相同屬性的另一個類

拉風的咖菲貓 2023-04-26 16:54:56
這是我的類結構:(省略了 getter 和 setter)public class A {     public List<QuestionTemplate> qTemplateList;}public class QuestionTemplate {    public List<QuestionList> qList;}public class QuestionList {    public String questionText;    public String questionChoice;}----------------------------------------------------public class B {     public List<QuestionTemplate> qTemplateList;}public class QuestionTemplate {    public List<QuestionList> qList;}public class QuestionList {    public String questionText;    public String questionChoice;} 我想手動將數據從 B 類復制到 A 類,手動復制字段而不是使用任何類型的映射器。我嘗試遍歷列表并嘗試從一個列表復制到另一個列表(從最內部的列表開始但遇到了很多問題。請原諒我是新手。我試過了。請幫忙。
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

此代碼需要 Java 7 或更高版本。


選項 A 通過迭代手動復制數據:


    A a = new A();


    ..


    List<QuestionTemplate> templateListCopy = new LinkedList<>();

    for (QuestionTemplate template : a.qTemplateList) {

        List<QuestionList> questionListCopy = new LinkedList<>();

        for (QuestionList question : template.qList) {

            QuestionList questionCopy = new QuestionList();

            questionCopy.questionText = question.questionText;

            questionCopy.questionChoice = question.questionChoice;

            questionListCopy.add(questionCopy);

        }

        QuestionTemplate questionTemplateCopy = new QuestionTemplate();

        questionTemplateCopy.qList = questionListCopy;

        templateListCopy.add(questionTemplateCopy);

    }

    B b = new B();

    b.qTemplateList = templateListCopy;

選項 B 修改類并添加復制方法,使實現代碼不那么混亂:


class A {

    public List<QuestionTemplate> qTemplateList;


    public A copy() {

        A copy = new A();

        List<QuestionTemplate> questionTemplateListCopy = new ArrayList<>(qTemplateList.size());

        for (QuestionTemplate questionTemplate : qTemplateList) {

            questionTemplateListCopy.add(questionTemplate.copy());

        }

        copy.qTemplateList = questionTemplateListCopy;

        return copy;

    }

}


class QuestionTemplate {

    public List<QuestionList> qList;


    public QuestionTemplate copy() {

        QuestionTemplate copy = new QuestionTemplate();

        List<QuestionList> qListCopy = new ArrayList<>(qList.size());

        for (QuestionList questionList : qList) {

            qListCopy.add(questionList.copy());

        }

        copy.qList = qListCopy;

        return copy;

    }

}


class QuestionList {

    public String questionText;

    public String questionChoice;


    public QuestionList copy() {

        QuestionList copy = new QuestionList();

        copy.questionText = questionText;

        copy.questionChoice = questionChoice;

        return copy;

    }

}

執行:


A a = new A();


..


B b = new B();

b.qTemplateList = a.copy().qTemplateList;


查看完整回答
反對 回復 2023-04-26
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

請參考此 通過反射將一個類中的字段的所有值復制到另一個類

那里已經回答了類似的問題。


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號