Java代码错误链表

时间:2015-10-16 23:24:44

标签: java static linked-list

嗨,我写了一段时间以来已经有一段时间了,我似乎无法找到这段代码的错误。我正在实现从链表中删除节点,但我的程序将无法编译。我一直得到:

错误:非静态变量,无法从静态上下文引用

expect($('#menu')).toBeHidden()

我的main方法中的所有新Node()实例都有错误。

Node head = new Node();

3 个答案:

答案 0 :(得分:2)

使Node类成为静态。 Node班级中取出NodeDelete班级。这将解决问题。

Node类是非静态内部类NodeDelete,因此它就像NodeDelete类的成员。要访问静态上下文中的任何成员,需要该类的实例。这就是为什么你在这里得到编译时错误

注意:您在Node中定义的构造函数与默认构造函数相同。所以不需要定义它。这是多余的。

使Node类静态:

static class Node {
  int data;
  Node next;

  public Node(){  }  // This is same as the default constructor. So this can be remove.
}

从NodeDelete类中取出相同的实现。

答案 1 :(得分:0)

Node是一个非静态的内部类。因此,构造实例需要包含类的实例:

NodeDelete nd = ...
Node node = nd.new Node();

备选方案:

  • 使Node成为静态内部类
  • Node成为顶级课程

由于在NodeDelete的方法中没有引用Node,我建议将Node设为静态。

答案 2 :(得分:0)

另一个尚未给出的选项,虽然不是我最喜欢的,但是将实例化包含main方法的类的实例,然后使用它来实例化内部类。像这样......

NodeDelete nd = new NodeDelete(...);
Node n = nd.new Node(...);