2013-03-22 108 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

你什麼意思,你不能訪問該方法?你看到編譯器錯誤消息嗎?如果是這樣,請在您的問題中發佈。 – 2013-03-22 01:52:24

+3

[這個編譯就好了](http://ideone.com/G9SCSB)。 – dasblinkenlight 2013-03-22 01:53:16

+2

Outer outer = new Outer();外部內部內部= outer.new內部(); inner.doSomeWork(); – chuthan20 2013-03-22 01:53:58

回答

12

這裏是你如何使內部的對象並訪問其變量...

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

Example code from Oracle is here...

+0

此代碼不起作用,內部類是私有的,所以任何客戶端代碼都將無法訪問它。但我不認爲這是OP的問題,因爲他似乎試圖從外部階層進入內部階級,而不是從外部進入。 – jedyobidan 2013-03-22 02:27:47

+0

你怎麼能這樣說?我嘗試刪除JPanel它工作正常。 – 2013-03-22 04:34:50