Possible Duplicate:
Why do I get “non-static variable this cannot be referenced from a static context”?
这里是代码
public class Stack
{
private class Node{
...
}
...
public static void main(String[] args){
Node node = new Node(); // generates a compiling error
}
}
错误提示:
non-static class Node cannot be referenced from a static context
为什么我不应该在 main() 方法中引用 Node 类?
最佳答案
Java 中的非静态嵌套类包含对父类的实例 的隐式引用。因此,要实例化一个 Node
,您还需要有一个 Stack
的实例。在静态上下文(主要方法)中,没有可引用的 Stack
实例。因此编译器表明它不能构造 Node
。
如果你把Node
做成一个静态类(或者普通的外部类),那么它就不需要Stack
的引用,可以直接在静态main方法中实例化.
见 Java Language Specification, Chapter 8详见示例 8.1.3-2。
关于java - 不能从静态上下文中引用非静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13373779/