1

オンラインで多くのフォーラムを検索した後、私はこれを理解することができませんでした。

ファイルA.javaにクラスAとネストされたクラスBがあり、ファイル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
}

誰でも助けてもらえますか?ネストされたインスタンス配列にアクセスしようとしているときに、構文でいくつかの基本的なエラーを起こしていると思います。ありがとう!

4

2 に答える 2

4

クラスコンストラクターAにアクセスするために使用する必要はありません。クラスインスタンスBですでにアクセスしています。Aステートメントを次のように変更するだけです。

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

参照:

そしてもちろん、その割り当ては、何らかのメソッド、コンストラクター、または初期化子内にある必要があります。そのように、クラス内に直接ステートメントを含めることはできません。class での割り当てと同じ問題A

したがって、クラスCを次のように変更する必要があります。

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

    {
        a.b[0] = a.new B(); 
    }
}
于 2013-09-05T05:38:38.443 に答える