java - usage - static inner class or not




비 정적 클래스는 정적 컨텍스트에서 참조 할 수 없습니다. (4)

가능한 중복 :
"정적 컨텍스트에서 참조 할 수없는 비 정적 변수"를 얻는 이유는 무엇입니까?

여기에 코드가있다.

public class Stack
{
    private class Node{
        ...
    }
    ...
    public static void main(String[] args){
         Node node = new Node(); // generates a compiling error
    }
}  

오류 메시지 :

비 정적 클래스 노드 는 정적 컨텍스트에서 참조 할 수 없습니다.

왜 내 main () 메소드에서 Node 클래스를 참조하지 말아야 하는가?


Eclipse IDE를 사용하는 경우 오류 위로 마우스를 가져 가면 설명을 볼 수 있습니다. 그것은 다음과 같이 말해야합니다 :

Stack 유형의 엔 클로징 인스턴스에 액세스 할 수 없습니다. 할당을 Stack 타입의 엔 클로징 인스턴스로 한정해야합니다 (예 : x가 스택의 인스턴스 인 경우 xnew A ()).

다음은 작업 코드입니다.

public static void main(String[] args){
    Stack stack = new Stack();
     Node node = stack.new Node(); 
}

Java에는 두 가지 유형의 중첩 된 멤버 클래스가 있습니다 . 정적 및 비 정적 (내부라고도 함)입니다. Node 클래스는 비 정적 중첩 클래스입니다. Node 의 인스턴스를 생성하려면 Stack 의 인스턴스가 있어야합니다.

Stack s = new Stack();
Node n = s.new Node();

귀하의 ( Node ) 클래스를 static 만드십시오.

private static class Node {

또는 클래스 클래스를 public class Stack 외부 에 선언 할 수 있습니다.

마찬가지로,

    public class Stack
    {

        public static void main(String[] args){
             Node node = new Node();         
}        
    }  
    class Node{

    }




inner-classes