我试图从另一个内部类访问内部类方法。两个内部类都在同一个外部类中声明:
class OuterFoo{
class innerFoo1{
public void methodFoo1(){
System.out.println(" Hello, i am in the inner foo 1");
}
}
class innerFoo2{
public void methodFoo2(){
System.out.println(" Hello, i am in the inner foo 2");
}
}
}
现在,我想从methodFoo2
访问methodFoo1
。
任何帮助都将不胜感激。
您需要对另一个内部类的实例的引用。像这样:
public class OuterFoo {
private class InnerFoo1 {
private void helloFoo1 () {
System.out.println("foo1");
InnerFoo2 foo2 = new InnerFoo2();
foo2.helloFoo2();
}
}
private class InnerFoo2 {
private void helloFoo2 () {
System.out.println("foo2");
InnerFoo1 foo1 = new InnerFoo1();
foo1.helloFoo1();
}
}
}
根据您希望实际程序应该做什么(如果您不需要实例化类InnerFoo,只需要调用静态方法),您也可以使类innerFoo2
和方法methodFoo2
为静态。
public class OuterFoo{
class innerFoo1{
public void methodFoo1(){
System.out.println(" Hello, i am in the inner foo 1");
OuterFoo.innerFoo2.methodFoo2();
}
}
static class innerFoo2{
public static void methodFoo2(){
System.out.println(" Hello, i am in the inner foo 2");
}
}
}
如果您的内部类已安装到OuterFoo
中
你可以这样做:
class OuterFoo{
final innerFoo1 if1 = new innerFoo1();
final innerFoo1 if2 = new innerFoo2();
class innerFoo1{
public void methodFoo1(){
System.out.println(" Hello, i am in the inner foo 1");
if2.methodFoo2();
}
}
class innerFoo2{
public void methodFoo2(){
System.out.println(" Hello, i am in the inner foo 2");
if1.methodFoo1();
}
}
}
试试这个代码
public class OuterFoo{
class innerFoo1{
public void methodFoo1(){
System.out.println(" Hello, i am in the inner foo 1");
}
}
class innerFoo2{
public void methodFoo2(){
System.out.println(" Hello, i am in the inner foo 2");
}
}
void displayInnerFoo1(){
innerFoo1 object1= new innerFoo1();
object1.methodFoo1();
}
void displayInnerFoo2(){
innerFoo2 object2= new innerFoo2();
object2.methodFoo2();
}
public static void main(String args[]){
OuterFoo objectParent= new OuterFoo();
objectParent.displayInnerFoo1();
objectParent.displayInnerFoo2();
}
}
创建内部类的Object,然后简单地使用点运算符来访问它。
ClassName obj = new ClassName();
obj.MethodName();