方法中的局部内部类的数量是否有限制?

时间:2011-05-01 17:17:44

标签: java inner-classes

我对一些java代码有点困难

class foo{
   public bar() {
      class innerA {}
      class innerB {} // Only this one is valid because it was declare last
   }
}

我的问题:在foo :: bar()中只能看到最后声明的内部类(innerB)。另外,我不能从另一个内部引用内部类。例如:

innerB{
    private innerA _a; // Error
}

我的问题:在方法中你可以拥有的本地内部类的数量是否有限制?本地内部类可以实例化其他本地内部类对象吗?他们应该吗?

编辑:我错过了在我的IDE中打字并遇到了一些范围问题......再次感谢!

TIA, 小白

2 个答案:

答案 0 :(得分:5)

请发布您真正尝试工作的代码,以及从Java编译器获得的错误消息。您发布的代码不是有效的Java。你想做的一切都是可行的。这是一个有效的例子:

public class Foo {
    public void bar() {
        class InnerA {
            public void hello() {
                System.out.println("Hello from InnerA");
            }
            public String getName() {
                return "InnerA";
            }
        }

        class InnerB {
            private InnerA aInB = new InnerA();
            public void hello() {
                System.out.println("Hello from InnerB");
                System.out.println("In InnerB, got name of InnerA : " + aInB.getName());
            }
        }

        InnerA a = new InnerA();
        InnerB b = new InnerB();

        a.hello();
        b.hello();
    }

    public static void main(String[] args) {
        new Foo().bar();
    }
}

运行它给出:

Hello from InnerA
Hello from InnerB
In InnerB, got name of InnerA : InnerA

答案 1 :(得分:0)

您忽略了为bar()指定返回类型。