2017-10-13 10 views
0

새 객체를 만들려고 할 때 일반적인 정적 변수가 정적 컨텍스트 오류에서 참조 될 수 없습니다. BookWord 클래스를 정적으로 만들면 모든 것이 작동합니다. Java로 괜찮습니까?객체를 생성 한 후에 정적 컨텍스트에서 비 정적 변수를 참조 할 수 없음

package javaapplication13; 

public class JavaApplication13 { 

    public class BookWord { 

     private String wordCharacters; 
     private int count; 

     public BookWord(String word){ 
      wordCharacters = word; 
     } 

     public String getWord() { 
      return wordCharacters; 
     } 

     public int getCount() { 
      return count; 
     } 
    } 

    public static void main(String[] args) { 
     BookWord existing = new BookWord("Hello"); // *** Error here *** 

     System.out.println("The word is " + existing.getWord()); 
     System.out.println("The current count is " + existing.getCount()); 

    } 
} 
+0

BookWord를 중첩시키려는 이유를 설명하십시오. 빌드 오류를 없애는 방법을 말하는 것이 아니라 질문에 대답하는 방법을 안내해 줄 것이라고 생각합니다. – nicomp

+0

괜찮다면이 의미에서 중첩 된 것을 설명하십시오. UML 다이어그램에서 지시 한대로 BookWord를 생성자로 사용하고있었습니다. –

+1

클래스 내에 선언 된 클래스가 있습니다. 'BookWord'를 둘러싸는 클래스는'JavaApplication1'입니다. BookWord는 JavaApplication1의 멤버 클래스이며 내부 클래스입니다. 즉, 연결할 수있는 JavaApplication1 인스턴스없이 'BookWord' 인스턴스를 만들 수 없습니다. – scottb

답변

1

클래스 BookWord는 JavaApplication13 개체에 대한 암시 적 참조를 보유합니다. 그러한 참조가 없도록하려면 정적으로 선언해야합니다.

BookWord는 공식 용어를 사용하는 내부 클래스입니다. 내부 클래스는 중첩 클래스의 한 유형입니다. BookWord를 정적으로 선언하면 정적 중첩 클래스입니다. 설명을 보려면 https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

+0

클래스를 정적으로 선언하십시오 ... public class static BookWord? –

+0

@TheRoofer 예 (public static class BookWord)입니다. 자세한 내용은 내 업데이트를 참조하십시오. – DodgyCodeException