如图,Java中递归内new的对象,那个变量指向的位置每次都会改变吗?

余子Gam 发布于 2018/12/05 09:55
阅读 372
收藏 0

/* 返回当前节点的父辈节点集合 */

public List getElders() {

List<TreeNode> elderList = new ArrayList<>();

TreeNode parentNode = this.getParentNode();

if (parentNode == null) {

return elderList;

}

else {

elderList.add(parentNode);

elderList.addAll(parentNode.getElders());

return elderList;

}

}

这个片段内 每次递归都会new 一个ArrayList,指向这个list的的elderList不是每次都指向一个新的地址吗? 这样上一次递归时,add()进去list的内容是不是已经找不到了?(因为这个elderList已经指向新的地址了把?) 那原本那个地址没有引用的话被 GC了,那这段代码能实现效果吗? 我觉得应该是将List<TreeNode> elderList = new ArrayList<>();这个放在这个方法外面,也就是放在类的成员变量里才对把?

加载中
0
DeMoNHaDeS
DeMoNHaDeS
return elderList;

每次调用这个方法,elderList都返回了,这个对象在调用的方法外被引用了,所以不会被gc。

余子Gam
该评论暂时无法显示,详情咨询 QQ 群:912889742
0
余子Gam
该评论暂时无法显示,详情咨询 QQ 群:912889742
0
52iSilence7
52iSilence7
该评论暂时无法显示,详情咨询 QQ 群:912889742
0
DeMoNHaDeS
DeMoNHaDeS
该评论暂时无法显示,详情咨询 QQ 群:912889742
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部