无法理解java中的新关键字

Moh*_*hit 12 java

可能是一个非常noob的问题

我是java新手,正在阅读用java编写的第三方api ...

我发现了这个宣言

Foo foo = new FooBar().new Foo();
Run Code Online (Sandbox Code Playgroud)

我无法理解

 FooBar().new
Run Code Online (Sandbox Code Playgroud)

这个宣言为什么会这样?

在声明上述内容以及此类声明的替代方案时,可以获得哪些优势.

任何建议/参考将不胜感激.

谢谢

Rei*_*eus 13

FooBar 包含这样的内部类

class FooBar {

    class Foo {
      ...
    }
}
Run Code Online (Sandbox Code Playgroud)

需要一个新的外部类实例来实例化内部类.有些类本身没有意义,因此实现为嵌套类.这里Foo有一个关系,FooBar并且还有权访问所有后者的成员变量.