Bacause Java поддерживает "объявление внутреннего класса". Это означает, что мы можем определить класс внутри другого класса, который может иметь имя (для вашего кода Y является внутренним классом внутри класса X). Теперь, когда вы пишете «new Foo (). NewBar ()», это означает, что сначала вы создаете объект Foo, а при его создании создается объект Bar (определенный как внутренний класс), в результате возвращается объект Bar .