嗨,我写了一段时间以来已经有一段时间了,我似乎无法找到这段代码的错误。我正在实现从链表中删除节点,但我的程序将无法编译。我一直得到:
错误:非静态变量,无法从静态上下文引用
expect($('#menu')).toBeHidden()
我的main方法中的所有新Node()实例都有错误。
Node head = new Node();
答案 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(...);