在Java中访问嵌套对象的数组

时间:2013-09-05 05:35:05

标签: java arrays nested-class

在网上搜索了很多论坛后,我现在已经很难解决这个问题了。

我在File A.java中有一个A类和一个嵌套的B类 File C.java中还有另一个C类

现在我在A类中声明了一个对象B数组,但是我既不能访问也不能初始化A类或C类中的数组元素。

public class A{
    public B b[] = new B[15]; //compiles
    b[0] = new B(); //does not compile
    // b[0] = this.new B(); //does not compile either

    public class B{
    }

}

现在在C类中,如果我执行以下操作:

public class C{
A a = new A(); //compiles
a.b[0] = a.new A.B(); //does not compile
}

有人可以帮忙吗?我想我在尝试访问嵌套实例数组时在语法上做了一些基本错误。谢谢!

2 个答案:

答案 0 :(得分:4)

您无需使用A来访问B类构造函数。您已经在A类实例上访问它了。只需将您的陈述更改为:

a.b[0] = a.new B();

<强>参考:

当然,该赋值必须在某些方法,构造函数或初始化器中。你不能直接在类中使用语句。与班级A中的作业相同的问题。

因此,您应该将类​​C更改为以下内容:

class C {
    A a = new A(); //compiles

    {
        a.b[0] = a.new B(); 
    }
}

答案 1 :(得分:2)

第二行b[0] = new B();应该在任何方法中 。喜欢这个

package com.sample;

public class A {
    public B[] b = new B[15];

    /*
     * public A() {
        b[0] = new B();
    *}

    */

    public class B {
    }
}

C.java

 package com.sample;

public class C {
    A a = new A();
    public C()
    {
        A a=new A();
        a.b[0]=a.new B();
    }
}