non-static class cannot be referenced from a static context

inner-classes, java

Solution

A non-static nested class in Java contains an implicit reference to an instance of the parent class. Thus to instantiate a `Node`, you would need to also have an instance of `Stack`. In a static context (the main method), there is no instance of `Stack` to refer to. Thus the compiler indicates it can not construct a `Node`.

If you make `Node` a static class (or regular outer class), then it will not need a reference to `Stack` and can be instantiated directly in the static main method.

See the Java Language Specification, Chapter 8 for details, such as Example 8.1.3-2.

Problem

Possible Duplicate: Why do I get “non-static variable this cannot be referenced from a static context”? Here are the codes ``` public class Stack { private class Node{ ... } ... public static void main(String[] args){ Node node = new Node(); // generates a compiling error } } ``` the error says: non-static class Node cannot be referenced from a static context Why shouldn't I refer the Node class in my main() method ?

Original source

Related problems