По некоторым причинам мне нужен новый объект, чтобы обернуть данные, которые я получаю от другого API.
Проблема, с которой я столкнулся, заключалась в том, что я не мог обрабатывать рекурсивное поле исходного объекта.
Вот пример кода:
//original object
public class Resource{
private String name;
private String content;
private Integer type;
private List<Resource> children = new LinkedList();
public void addChildrenResource(Resource children) {
this.children.add(children);
}
//getters&setters...
}
//the object try to convert
public class Menu{
private String name;
private String url;
private Integer type;
private List<Menu> subMenu = new LinkedList();
public void addChildrenResource(Menu subMenu) {
this.children.add(subMenu);
}
//getters&setters...
}
Реализация, которую я сделал, я понятия не имею, что делать с рекурсивным полем ...
Вот мой код ..
List<Resource> resources = rpcService.getResources();
//Here I can't handle the subMenu or children part..
List<Menu> menus = resources.stream().map(r -> new Menu(r.getName(),
r.getContent(), r.getType())).collect(Collectors.toList());
Рекурсия может состоять из множества слоев, так как я могу преобразовать ее с помощью рекурсивного поля?
Примечание: класс Resource
из другого модуля, поэтому я не могу его изменить, для проблемы с именами я должен преобразовать его.
Нам не нужно решать это к Stream()
, просто найдите способ выяснить это.