Java中能否在类内部将当前对象引用指向新对象?
问题
我现在要反转一个SinglyLinkedList对象,目前的实现方式是创建新的链表对象,复制原链表元素生成反转链表后,将新链表的head、tail、size属性赋值给当前对象。但我想知道,能否在reverseList()方法内部直接将当前对象的引用指向新创建的反转链表对象(即类似this = reverse的操作,虽语法错误但表达此意图)?我知道可以通过返回新链表在main方法中重新赋值,但希望了解在类内部是否能实现该操作,若不能,原因是什么?
回答
- 不能在
reverseList()方法内部通过this = reverse这类操作改变当前对象的引用指向。 - 核心原因:在Java等主流面向对象编程语言中,
this是一个只读的内置引用,它固定指向调用当前方法的对象实例,不允许被重新赋值。哪怕语法允许给this赋值,也只是修改了方法内部的一个局部引用副本,外部调用者持有的原对象引用不会有任何变化,完全达不到替换对象的效果。 - 你当前采用的「将新反转链表的属性赋值给当前对象」的方案是合理的,这属于修改当前对象的内部状态,而非替换对象本身。如果必须通过替换对象实现反转逻辑,只能让
reverseList()方法返回新的链表实例,再由外部调用方将原引用变量重新赋值为这个新实例。
内容的提问来源于stack exchange,提问作者tarrzaann
相关产品推荐
相关产品推荐

