Как преобразовать объект Java в список типов данных класса? - PullRequest
0 голосов
/ 16 октября 2019

Я получаю объект json из моего JS-кода в код Java как Java-объект.
Теперь я пытаюсь использовать этот объект в моей другой функции, которая принимает List of Class Datatype. Но я все время сталкиваюсь с ошибкой.

java.lang.ClassCastException: java.util.ArrayList не может быть приведен к com.lexec.domain.Task

Здесь Task - это мой тип данных класса, а SubTask расширяет Task. В функции buildTask я пытаюсь преобразовать подзадачу в список подзадач, но на этом этапе происходит сбой.

Может кто-нибудь помочь мне, как избавиться от этой ошибки? Дайте мне знать, нужна ли какая-либо дополнительная информация.

@POST
@Path("/saveBPELTask")
@Consumes(MediaType.APPLICATION_JSON)
    public CTaskPI saveBPELTask(SubTask subtask) {  
      BpelTask btask = (BpelTask) taskBuilderFactory.buildTask(subtask);
      return btask;
    }


public Task buildTask(SubTask subTask) {
        List<SubTask> abc = (List<SubTask>) new List<SubTask> ();
        abc.add(subTask);
        return (Task) buildChildTasks(abc);
    }


private List<Task> buildChildTasks(List<SubTask> subTaskList){
        List<Task> taskList = new ArrayList<Task>();
        Task task = null;
        for(int i = 0;i < subTaskList.size(); i++){
            SubTask subTask = subTaskList.get(i);
            if(subTask.getExpression().startsWith("if")){
                task = new BpelTask();
                ((BpelTask)task).setAction(BpelAction.CONTINUE);
                taskList.add(task);   

            } else if(subTask.getExpression().startsWith("endif")){
                task = new BpelTask();
                ((BpelTask)task).setAction(BpelAction.ABORT);
                taskList.add(task);
            } 
return taskList;
}
...