由于对象不同,每次都要重新写一个列表转为树的代码,但转换的过程都是大致一样的,这就非常麻烦!所以想抽取一下写个共用方法,下次只需要调用即可。
提取父类并对子集泛型化
第一步,先把需要的参数提取到父类,接着让子类继承父类。通过泛型边界,让父类去进行操作。
- id : 树的id
- pId: 树的父级id
- orderNum : 显示顺序
- childList : 子节点集
这里还有其他一些参数,根据实际情况来添加就行,这里主要是以转换为主,不过多处理
利用泛型定义子节点集
编译的时候不能把不同对象放入列表,但泛型其实在运行的时候会进行泛型擦除。我们可以通过定义泛型上边界,将子类放进去就行了。
泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。不能直接在字段上使用泛型上下边界,通过方法实现!
列表转为树形结构代码
public class TreeUtils {
/**
* 获取树列表
* @param menus
* @param <T>
*/
public static <T extends Tree> List<T> getTreeList(List<T> menus) {
if (CollectionUtils.isEmpty(