为了账号安全,请及时绑定邮箱和手机立即绑定

如何将值从一个 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 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信