NutzCN Logo
问答 SHIRO从user中取出functionList,组装成Tree的时候,自己居然会被篡改
发布于 2019天前 作者 herexu 1443 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk
List<Function> resultFunctionList = new ArrayList<Function>();
        List<Function> functionListTemp = new ArrayList<Function>();
        Subject currentUser = SecurityUtils.getSubject();
        User user = (User) currentUser.getPrincipal();
        List<Function> functionList = user.getFunctionList();
        functionListTemp = new ArrayList<Function>(functionList);
        Iterator<Function> iterator = functionListTemp.iterator();
        for (Function parent : functionListTemp) {
            if (oid.equals(parent.getOid())) {
                resultFunctionList.add(parent);
                for (Function child : functionListTemp) {
                    if (child.getPid().equals(parent.getOid())) {
                        if (parent.getChildren() == null) {
                            parent.setChildren(new ArrayList<Function>());
                        }
                        parent.getChildren().add(child);
                    }
                }
            }
        }
        return resultFunctionList;

parent.getChildren().add(child) 居然会改变functionList对象中的内容

8 回复

在我看来,修改这个user对象本身就是错的

兽总,没有修改这个user,我只是要取出对象,这个对象在登录的时候设置的@we

@wendal 真没修改这个对象,只是取值

functionListTemp里面的元素就是functionList的元素,那么,既然是同一个元素,getClient.add当然会影响到functionList

你以为那是深拷贝,事实上是浅拷贝

那深拷贝怎么弄了

还不如从数据库查

好吧,我去查吧,#cry#

添加回复
请先登陆
回到顶部