12

おそらく非常に初歩的な質問です

私はJavaが初めてで、Javaで書かれたサードパーティのAPIを読んでいます...

私はこの宣言に出くわしました

Foo foo = new FooBar().new Foo();

理解できない

 FooBar().new

なぜこのような宣言になるのでしょうか?

上記のようなものを宣言することで得られる利点と、そのような宣言の代替手段は何ですか。

アドバイス/リファレンスをいただければ幸いです。

ありがとう

4

2 に答える 2

13

FooBarこのような内部クラスが含まれています

class FooBar {

    class Foo {
      ...
    }
}

内部クラスをインスタンス化するには、外部クラスの新しいインスタンスが必要です。一部のクラスは、それ自体では意味を成さないため、ネストされたクラスとして実装されます。ここFooには関係がFooBarあり、後者のすべてのメンバー変数にアクセスできるという利点もあります。

于 2013-06-03T17:15:36.473 に答える