gpt4 book ai didi

java - 调用 set 方法而不调用构造函数

转载 作者:行者123 更新时间:2023-11-30 03:55:06 25 4
gpt4 key购买 nike

我正在尝试创建一个链接列表。这是我的代码。

public class Node{
private String element;
private Node next;
public Node(String element,Node next){
this.element=element;
this.next=next;
}
public Node(String element){
this(element,null);
}
public void setElement(String newElem){
element=newElem;
}
public void setNext(Node newNext){
next=newNext;
}
public String getElement(){
return element;
}
public Node getNext(){
return next;
}
}


public class SLinkedList{
protected Node head;
protected long size;
public SLinkedList(){
head=null;
size=0;
}
public void addElem(String e){
v=new Node(e,head);
v.setElement(e);
v.setNext(head);
head=v;
size++;
System.out.println(v.getElement());
}
public static void main (String args[]){
SLinkedList l=new SLinkedList();
l.addElem("Element");
//System.out.println(l.getElement());
}

}

我的问题是当我设置时

 public void addElem(String e){
v=new Node(e,head);
v.setElement(e);
v.setNext(head);
head=v;

它给出了一个错误。但是如果我将 addItem 更改为

public void addElem(String e){
Node v=new Node(e,head);
head=v;
size++;
System.out.println(v.getElement());
}

这工作正常。我需要始终通过构造函数调用吗?设置方法有什么意义?
还有一种方法可以打印出除 System.out.println(v.getElement());inside addElem()

之外的元素

最佳答案

  1. 您的问题是您没有在第一个代码中声明 v 的含义,而在第二个代码中您明确声明了它。

    v=new Node(e,head);

    由于您之前没有定义 v,JVM 不知道 v 是什么

    Node v=new Node(e,head);

    这告诉 JVM v 的类型为 Node

  2. 使用构造函数的目的是一次性设置所有变量,而不是使用多个 setter 方法。您始终可以使用单独的 setter 方法,只要它们是公共(public)的

  3. 按照您设计代码的方式,您始终必须调用 getElement() 来打印值。

关于java - 调用 set 方法而不调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23420322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com