怎样正确修改Java形参的引用
额,回答跟本题关系不大,只是提供一个思路(我不知道你的treenode是怎么可以初始化的,所以只讲原理,你自己参照着做就好了),如果形参不是基本数据类型的时候传的是实参的引用 public static void main(String args) { List\u0026lt;Integer\u0026gt; is = new ArrayList\u0026lt;Integer\u0026gt;(); is.add(1); is.add(2); is.add(3); is.add(4); System.out.println(is.toString()); // System.out.println(new Test().getLeaves(is)); // System.out.println(is.toString()); // } private List\u0026lt;Integer\u0026gt; getLeaves(List\u0026lt;Integer\u0026gt; newIs) { newIs= new ArrayList\u0026lt;Integer\u0026gt;(); newIs.add(1456); return newIs; }我这段代码中就是把is的内存地址传到方法中让newIs引用,这时候不管是newIs = null还是像例子中一样都是切断newIs与原内存地址的联系,对is和is所引用的内存没有任何影响,所以这时候原来的is并没有改变private List\u0026lt;Integer\u0026gt; getLeaves(List\u0026lt;Integer\u0026gt; newIs) { newIs.set(2, 111); return newIs; }但是如果你这样,此时改的就是newIs所引用的那个内存地址中集合的第三个值,这个集合也是is引用的那个集合,这个时候is就改变了,所以要实现你说的要求的话在集合中使用newIs.removeAll(newIs);将is和newIs共同引用的那个内存中的对象清空就好了(我暂时无法实现将内存中的对象改为null,所以我也不知道怎么把is变成null,只能清空)这个是针对list的实现方式,你可以参照一下实现你需要的效果
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
