簡體   English   中英

如何訪問位於Java中另一個類的另一個方法內的類內的方法

[英]How can I access a method that is inside a class that is inside another method of another class in Java

下面是成功編譯的程序,但是如何訪問類A的m1()方法中的B類m2()方法。

class A{  
    public void m1()
    {
      System.out.println("A-m1"); 
        class B{
            public void m2()
            {
                System.out.println("B-m2");
            }
        }//end of class B
    }//end of m1() method
}// end of class A

這一切都取決於范圍。 如果要在m1()的末尾調用m2() ,就像創建B的新實例並調用方法一樣簡單。

new B().m2()

如果你想在方法之外或在聲明之前調用它,它將不允許你因為范圍。

如果是這種情況,您應該考慮將其范圍提升到類級別。

簡單:你不能在課堂之外(好吧,不是以合理的方式)。

B是一個本地類 - 它只存在於該方法m1()的范圍內。 因此,您只能在該方法中實例化它。 因此,在m1()中,你可以做一個簡單的B b = new B() ,然后調用b.m2() 但是在該方法之外,沒有語法允許您“獲取”到A.m1().B.m2()

好吧,你也可以使用反射在該方法之外實例化它。 你看,這個類的錯位名是A $ 1B.class。

因此,您可以使用Class.forName("A$1B")來獲取相應的類; 然后當你有一個A類實例時,你可以再次使用反射來實例化該本地類的對象。 在那個例子中,你可以再次使用反射調用m2()。

但是:你甚至不應該嘗試這樣做。 如果需要從其他地方調用類B及其方法m2(),那么就不要使它成為本地類。 使它成為內部階級,甚至是(非公開的)頂級階級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM