![](/img/trans.png)
[英]How do I make a loop inside a method in one class to call on another method in another class n 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.