У меня есть класс "Job", определенный следующим образом:
public class Job extends AbstractJob
{
private String name;
private String jobCount;
private String status;
private List<Job> children;
public Job(String name, String jobCount, String status, List<Job> children) {
this.name = name;
this.jobCount = jobCount;
this.status = status;
this.children = children;
}
public String getName()
{
return name;
}
public String getJobCount()
{
return jobCount;
}
public String getStatus()
{
return status;
}
public List<Job> getChildren() {
return children;
}
public void setName(String name) {
this.name = name;
}
public void setJobCount(String jobCount) {
this.jobCount = jobCount;
}
public void setStatus(String status) {
this.status = status;
}
public void setChildren(List<Job> children) {
this.children = children;
}
}
Что я хотел бы сделать, так это уметь извлекать все элементы из списка заданий, включая их детей. Вот что я сделал до сих пор:
public List<Job> getJobChildren(Job job) {
List<Job> result = new ArrayList<Job>();
if (job == null) {
return new ArrayList<Job>();
}
List<Job> children = job.getChildren();
for (Job k : children) {
if (children != null && !children.isEmpty()) {
result.addAll(children);
getJobChildren(k);
} else {
result.add(k);
}
}
return result;
}
В основном классе я создал и заполнил задания для его проверки, но получаю исключение nullpointerException:
Job job2 = new Job("JOB0002","0002","Finished",null);
Job job3 = new Job("JOB0003","0003","Error",jobSubList);
Job job4 = new Job("JOB0004","0004","En cours",null);
jobSubList.add(job4);
List<Job> jobList = new ArrayList<Job>();
jobList.add(job2);
jobList.add(job3);
Job job = new Job("JOB0001","0001","En Cours",jobList);
Я знаю, почему я получаю исключение, но я не могу отредактировать метод, чтобы он возвращал всех детей.
Идея состоит в том, чтобы пройти через все рабочие места и посмотреть, есть ли у них собственные рабочие места. Если они это сделают, я иду на уровень глубже и извлекаю всех этих детей, и я продолжаю делать это, пока не получу все задания.
Не могли бы вы сказать мне, что я делаю неправильно в этом методе?
Спасибо.