[英]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.