2013-03-22 2 views
5

외부 클래스가 있습니다. 또한 JPanel을 확장하는 개인 내부 클래스가 있습니다. 이것은 코드의 디자인입니다.java 내부 클래스 메소드 액세스

public class Outer{ 
    private class Inner extends JPanel{ 
     public void doSomeWork(){} 
    } 

    public Outer(){ 
     Inner inner = new Inner(); 
     inner.doSomeWork(); 
    } 

    public static void main(String args[]){ 
     Outer outer = new Outer(); 
    } 
} 

외부 클래스의 내부 클래스의 doSomeWork() 메소드에 액세스 할 수 없습니다. 도와주세요. 당신은 내부의 객체를 만들고 그 변수에 액세스하는 방법을 여기에

+1

당신은 무엇을 의미합니까 당신이 방법을 액세스 할 수 없습니다 ...인가? 컴파일러 오류 메시지가 표시됩니까? 그렇다면 귀하의 질문에 여기에 게시하십시오. –

+3

[이것은 잘 컴파일됩니다] (http://ideone.com/G9SCSB). – dasblinkenlight

+2

바깥 쪽 바깥 쪽 = 새 바깥 쪽(); Outer.Inner inner = outer.new Inner(); inner.doSomeWork(); – chuthan20

답변

12

Outer outer = new Outer(); 
Outer.Inner inner = outer.new Inner(); 
inner.doSomeWork(); 

Example code from Oracle is here...

+0

이 코드는 작동하지 않으며 내부 클래스는 private이므로 클라이언트 코드에서 액세스 할 수 없습니다. 그러나 이것이 OP의 질문이라고 생각하지 않습니다. 그는 외부 클래스가 아닌 내부 클래스에 액세스하려고하는 것처럼 보입니다. – jedyobidan

+0

어떻게 이런 말을 할 수 있습니까? JPanel을 그냥 제거해 보았습니다. –

관련 문제