1 创建实例对象
@Data
public class Param implements Serializable {
private static final long serialVersionUID = 877366142922526137L;
private String name;
private String position;
private String required;
private Object example;
private List<Param> child;
}
2 创建包装类型实例对象
@Data
public static class ParamWapper{
private String subName;
private Param param;
}
3 递归方法实现
public static void paramTraversal(Param param,String subName, Consumer<ParamWapper> consumer){
if(null == param){
return;
}
ParamWapper paramWapper = new ParamWapper();
paramWapper.setParam(param);
paramWapper.setSubName(subName);
consumer.accept(paramWapper);
if(CollectionUtils.isNotEmpty(param.getChild())){
List<Param> child = param.getChild();
child.stream().forEach(childParam -> {
paramTraversal(childParam,param.getName(),consumer);
});
}
}
4 递归业务逻辑实现
public static void main(String[] args) {
Param sub = createParam("sub",true);
paramTraversal(sub,sub.getName(),paramWapper -> {
System.out.println("param:"+paramWapper.getParam());
});
}
public static Param createParam(String name,Boolean addChild){
Param param = new Param();
param.setName("param:"+name);
param.setPosition("query");
if(addChild){
ArrayList<Param> params = new ArrayList<>();
for(int k = 0 ; k < 5 ; k++){
params.add(createParam(String.valueOf(k),false));
}
param.setChild(params);
}
return param;
}
这样的优雅的代码 ,能够实现将递归算法和具体的业务逻辑进行解耦,实现递归算法方法的复用 赞~~~