2

次の2つのネストされたクラスがあると考えてください。

public class Foo {

    public class Bar {

    }

}

そして、私の目標は、クラスのインスタンスを作成することBarです。私はそれを次の方法でやろうとしました:

// Method one
Foo fooInstance = new Foo();
Foo.Bar barInstance = new fooInstance.Bar // fooInstance cannot be resolved to a type

// Method two
Foo.Bar barInstance = new Foo.Bar(); // No enclosing instance of type Foo is accessible

どんな助けでも大歓迎です、私は立ち往生しています。お気づきかもしれませんが、私はJavaの初心者です。これは、これを宿題の質問にすることはありません(実際のところ、そうではありません)。

Barクラスのインスタンスを作成するにはどうすればよいですか?できれば同じFooインスタンスで。

4

4 に答える 4

4

選ぶ。代わりに次のように記述します。

Foo.Bar barInstance = fooInstance.new Bar();
于 2012-08-23T20:36:21.840 に答える
3

ここ:

Foo.Bar barInstance = new fooInstance.Bar // fooInstance cannot be resolved to a type

存在しない型をインスタンス化しようとします(fooInstanceは単なる変数です)

それを行う正しい方法は、説明されているように、次のとおりです。

Foo.Bar barInstance = new Foo().new Bar()

ここ:

Foo.Bar barInstance = new Foo.Bar(); // No enclosing instance of type Foo is accessible

これは、Fooの静的内部クラスに対してのみ有効です。したがって、これがニーズに合う場合は、BooをFooの静的内部クラスにします

于 2012-08-23T20:41:37.720 に答える
2

次のような内部クラスのオブジェクトを作成する必要があります。

Foo.Bar barObj = new Foo().new Bar();

内部クラスが静的である場合は、次のように直接作成できます。

public class Foo {    
    static public class Bar {    
    }    
} 


Foo.Bar b = new Foo.Bar();
于 2012-08-23T20:37:09.703 に答える
0

そのはず

Foo.Bar barInstance = new Foo().new Bar();
于 2012-08-23T20:38:14.280 に答える