Как скопировать общий список c с Eclipse EMF? - PullRequest
0 голосов
/ 20 февраля 2020

как я могу разделить Elist на два Elists без получения исключения NullPointerException. Я уже пробовал EcoreUtil.copy () / Collections.copy. Проблема кажется в том, что при объявлении списка назначения копирования его нужно инициализировать с = null; Я также попытался использовать Iterator для копирования элементов и попытался добавить их с помощью .set () .add (), чтобы завершить работу с исключением, описанным выше. Объявление целевого списка, кажется, работает только с выделением. Во время отладки я ясно вижу, что скопированный объект в списке не является нулевым.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Если вам нужна копия списка, вы также можете использовать утилиту ECollections :

ECollections.newBasicEList(Iterable)
Создает изменяемый BasicEList содержит данные элементы.

Таким образом, чтобы скопировать список RtModuleInvocation, вы можете использовать:

ECollections.newBasicEList(rtTask.getModuleInvocations())
0 голосов
/ 20 февраля 2020

Благодаря https://www.programcreek.com/java-api-examples/emf я нашел правильный способ инициализации моего Elist с помощью конструктора, который создает пустой экземпляр без начальной емкости. Хранение данных будет нулевым. и хоп это работает.

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