java - 不能从静态上下文中引用非静态类

标签 java inner-classes

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/

相关文章:

java - 如何在 GWT 中实现登录屏幕?

Java内部类和静态嵌套类

JAVA方法覆盖和内部类概念

java - Java中如何检查内部类的所有权

java - 如何测量 Java GC Stop The World 时间?

java - 由于 arraylist 类型,二元运算符 '+' 的错误操作数类型

java - 从txt文件中读取数据并使用java将其插入数据库

c++ - 在 C++ 中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一个外部类下)

java - java内部类对象如何存在于内存堆中?

java - while 循环后的下一行未执行