gpt4 book ai didi

Java 嵌套类无法识别其自身实例

转载 作者:行者123 更新时间:2023-12-02 01:07:44 25 4
gpt4 key购买 nike

我正在尝试创建一个链接列表,但由于某种原因 Link<E>类不能“识别”(由于缺乏更好的词语)自身的实例。更具体地说,VS代码告诉我:The method setnext(Problem<E>.Link<E>) is undefined for the type Problem<E>.Link<E> 。我相信这意味着它将 linkToAdd 视为 Problem<E>.Link<E> 的实例及其本身作为 Link<E> 的实例。但我可能会误解。

谁能告诉我我做错了什么?

这是该类的最小化版本,但仍会产生错误:


public class Problem<E>
{
public class Link<E>
{
private E element;
private Link<E> next;

Link(E element, Link<E> next) {
this.element = element;
this.next = next;
}

void setNext(Link<E> next) {
this.next = next;
}
}

private Link<E> start;

public Problem() {
start = new Link<E>(null, null);
}

public boolean add(E element) {
Link<E> linkToAdd = new Link<E>(element, null);
this.start.setnext(linkToAdd);
}
}

编辑:我已经添加了问题类的构造函数。没有 main(String[] args),因为这是学校练习的一部分,我只获得了一个类的文档,并且预计将基于该文档创建所述类。我实际上还没有在任何地方使用这个类。

编辑 #2:这是运行 java Problem.java 给出的错误在终端中:

Problem.java:27: error: cannot find symbol
this.start.setnext(linkToAdd);
^
symbol: method setnext(Problem<E>.Link<E>)
location: variable start of type Problem<E>.Link<E>
where E is a type-variable:
E extends Object declared in class Problem
1 error
error: compilation failed

最佳答案

由于您没有提供客户端(驱动程序)代码,我假设您没有正确实例化 Link。请参阅有效示例。

public class Problem<E> {
class Link<E> {
private E element;
private Link<E> next = null;

public Link(E element) {
this.element = element;
}

public void setnext(Link<E> next) {
this.next = next;
}
}

Link<E> start = new Link(null);

public void add(E element) {
Link<E> linkToAdd = new Link(element);
start.setnext(linkToAdd);
}

public static void main(String[] args) {
Problem<Integer> problem = new Problem<>();
Problem<Integer>.Link<Integer> link = problem.new Link<Integer>(1);
problem.add(2);
}
}

关于Java 嵌套类无法识别其自身实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803412/

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