Java-我可以使用setter方法将链接列表节点设置为另一个节点吗?

问题描述 投票:0回答:2

我是一名学习Java的新手,我想通过链接列表尝试一下运气。一切工作正常,但是现在我想用Get和Set方法替换对节点属性的所有直接调用。但是,有一种方法困扰我。我想实现一个setNode方法,该方法将当前节点设置为另一个节点。以下是一些相关代码:

public class ListNode {

    int value;
    ListNode next;

    // more code exists in-between but it shouldn't be related (theoretically speaking :P)

    public void setNode(ListNode node) {
        this = node;
    }

}

但是,当我尝试编译程序时,出现以下错误消息:

ListNode.java:32: error: cannot assign a value to final variable this
                this = node;
                ^

所以我想知道是否有某种解决方法,以及为什么我们可以做到这一点而没有问题:

node = node.next;
// or
node = node2;

例如,但不是这个:

this = this.next;
// or
this = node2;

谢谢您的帮助!这是我第一次在这里提出问题,对于任何格式问题或冗余问题,我深表歉意,我尽力使问题尽可能清楚!

java linked-list singly-linked-list
2个回答
0
投票

'this'关键字表示您正在引用的当前对象。因此,您根本无法将对象值分配给“ this”。

我建议对代码进行以下更改,

public void setValue(int value) {
    this.value = value;
}

public void setNextNode(ListNode node) {
    this.next = node;
}


0
投票

this关键字用于引用Java中的当前对象。更重要的是,您的错误给出的信息是这是一个最终变量(因此无法更改)。之所以将其作为最终变量,是因为它可以随时用于获取当前对象的上下文。想象一下,如果有人修改了它,以后如何在需要当前对象的代码中使用它。

在您的示例中,您需要使用以下内容:-

public void setNode(ListNode node) {
     this.next = node;
}
© www.soinside.com 2019 - 2024. All rights reserved.