可能的重复:
为什么我会收到“无法从静态上下文引用的非静态变量”? https://stackoverflow.com/questions/10301907/why-do-i-get-non-static-variable-this-cannot-be-referenced-from-a-static-contex
这是代码
public class Stack
{
private class Node{
...
}
...
public static void main(String[] args){
Node node = new Node(); // generates a compiling error
}
}
错误说:
非静态类Node无法从静态上下文中引用
为什么我不应该在 main() 方法中引用 Node 类?
Java 中的非静态嵌套类包含对某个对象的隐式引用instance父类的。因此要实例化一个Node
,您还需要有一个实例Stack
。在静态上下文(main方法)中,没有实例Stack
参考。因此编译器表明它不能构造一个Node
.
如果你做Node
静态类(或常规外部类),那么它不需要引用Stack
并且可以直接在静态main方法中实例化。
See the Java 语言规范,第 8 章 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html详细信息,如例8.1.3-2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)