大家好,我是一名安安静静写代码的java码农,知道有一天我给变量赋值失败后,我感觉很不好

李嘉图 发布于 2016/09/10 12:22
阅读 540
收藏 0

代码如下,

private void adjustBookmark(PDOutlineItem root, Tree<String> tree) throws IOException {
        if (!CollectionUtil.isEmpty(tree.sons)) {
            for (Tree<String> son : tree.sons) {
                System.out.println(bookmarkMap.containsKey(son.data));
                System.out.println(bookmarkMap.get(son.data));
                PDOutlineItem item = bookmarkMap.get(son.data);
                System.out.println(item);
                root.addLast(item);
                if (!CollectionUtil.isEmpty(son.sons)) {
                    adjustBookmark(item, son);
                }
            }
        }
    }



这是一个递归的程序,debug如下:

可以,看出bookmarkMap存在对应的key和value,虽然bookmarkMap是一个实例变量,但是当前环境中不存在并发问题,也就是给item赋值的时候,bookmarkMap是有对应的值的,但是为什么就会出现这样的结果,item无法赋值了呢?

而且每次都是到这个特定的key("jquery 分享")的时候,出现这样的问题,这也从侧面验证了不存在并发问题,如果并发了,那么可能随机null.

加载中
0
北极心
北极心
你先吧递归屏蔽掉,在调试看看
0
沙枣
沙枣

就是一个递归赋值的例子,代码能这么一大堆,实在是看不懂。

0
gnr163
gnr163
所以你确定 bookmarkMap 里面的的键值对不是 key,null ? 
返回顶部
顶部