2011-05-01 5 views
1

내가 어떤 자바 코드메소드 내부의 로컬 내부 클래스 수에 제한이 있습니까?

class foo{ 
    public bar() { 
     class innerA {} 
     class innerB {} // Only this one is valid because it was declare last 
    } 
} 

내 문제와 어려움을 조금 보내고있어 : 마지막이 내부 클래스 (innerB)를 선언하는 것은 foo는 :: 바에서 볼 수있다(). 또한, 다른 내부에서 내부 클래스를 참조 할 수 없습니다. 예 :

innerB{ 
    private innerA _a; // Error 
} 

내 질문 : 메소드 내에서 가질 수있는 로컬 내부 클래스 수에 제한이 있습니까? 로컬 내부 클래스가 다른 로컬 내부 클래스 객체를 인스턴스화 할 수 있습니까? 그들은해야합니까?

EDIT : IDE에 잘못 입력되어 일부 범위 지정 문제가 있습니다 ... 다시 한 번 감사드립니다!

TIA, 멍청한 놈

답변

5

당신은 자바 컴파일러에서 얻을 당신이 정말로 일을하려고 코드 및 오류 메시지를 게시하시기 바랍니다. 게시 한 코드가 유효한 자바가 아닙니다. 당신이하고 싶은 모든 것은 할 수 있습니다. 가 제공 실행

public class Foo { 
    public void bar() { 
     class InnerA { 
      public void hello() { 
       System.out.println("Hello from InnerA"); 
      } 
      public String getName() { 
       return "InnerA"; 
      } 
     } 

     class InnerB { 
      private InnerA aInB = new InnerA(); 
      public void hello() { 
       System.out.println("Hello from InnerB"); 
       System.out.println("In InnerB, got name of InnerA : " + aInB.getName()); 
      } 
     } 

     InnerA a = new InnerA(); 
     InnerB b = new InnerB(); 

     a.hello(); 
     b.hello(); 
    } 

    public static void main(String[] args) { 
     new Foo().bar(); 
    } 
} 

: 다음은 작업 예입니다 당신은 bar()에 대한 반환 유형을 지정하기로 무시

Hello from InnerA 
Hello from InnerB 
In InnerB, got name of InnerA : InnerA 
+0

올바른지, IDE에서 입력 한 내용이 누락되었습니다. 고마워요! – certifiedNoob

관련 문제