You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中能否在类内部将当前对象引用指向新对象?

问题

我现在要反转一个SinglyLinkedList对象,目前的实现方式是创建新的链表对象,复制原链表元素生成反转链表后,将新链表的head、tail、size属性赋值给当前对象。但我想知道,能否在reverseList()方法内部直接将当前对象的引用指向新创建的反转链表对象(即类似this = reverse的操作,虽语法错误但表达此意图)?我知道可以通过返回新链表在main方法中重新赋值,但希望了解在类内部是否能实现该操作,若不能,原因是什么?

回答
  • 不能在reverseList()方法内部通过this = reverse这类操作改变当前对象的引用指向。
  • 核心原因:在Java等主流面向对象编程语言中,this是一个只读的内置引用,它固定指向调用当前方法的对象实例,不允许被重新赋值。哪怕语法允许给this赋值,也只是修改了方法内部的一个局部引用副本,外部调用者持有的原对象引用不会有任何变化,完全达不到替换对象的效果。
  • 你当前采用的「将新反转链表的属性赋值给当前对象」的方案是合理的,这属于修改当前对象的内部状态,而非替换对象本身。如果必须通过替换对象实现反转逻辑,只能让reverseList()方法返回新的链表实例,再由外部调用方将原引用变量重新赋值为这个新实例。

内容的提问来源于stack exchange,提问作者tarrzaann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:29:50