【问题标题】:How to copy a generic list with Eclipse EMF?如何使用 Eclipse EMF 复制通用列表?
【发布时间】:2020-06-04 16:16:36
【问题描述】:

如何在不出现 NullPointerException 的情况下将一个 Elist 拆分为两个 Elist。我已经尝试过 EcoreUtil.copy() / Collections.copy。问题似乎是在声明复制目标 List 时,它需要用 = null; 进行初始化。我还尝试使用迭代器来复制元素,并尝试使用 .set() .add() 将它们添加到上面的异常中全部退出。目标列表的声明似乎只适用于分配。在调试时,我清楚地看到 List 中复制的对象不为空。

 EList<RtTask> tasks = rtModule.getTasks();
 EList<RtModuleInvocation> invoc0 = null; //target List
        for (RtTask rtTask : tasks) {
            EList<RtModuleInvocation> invocations = rtTask.getModuleInvocations(); //src List

谢谢。

【问题讨论】:

    标签: java emf eclipse-emf ecore


    【解决方案1】:

    感谢https://www.programcreek.com/java-api-examples/emf,我找到了使用构造函数初始化我的 Elist 的正确方法,该构造函数创建一个没有初始容量的空实例。数据存储将为空。并跳它工作。

    EList<RtModuleInvocation> invoc0 = new BasicEList<>();
    

    【讨论】:

      【解决方案2】:

      如果您想要一份列表的副本,您还可以使用ECollections 实用程序:

      ECollections.newBasicEList(Iterable)
      创建一个包含给定元素的可变BasicEList

      所以要复制RtModuleInvocation 列表,您可以使用:

      ECollections.newBasicEList(rtTask.getModuleInvocations())
      

      【讨论】:

        猜你喜欢
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-24
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多