Java 生成器在生成器中具有私人访问权限

Java 生成器在生成器中具有私人访问权限,java,builder,Java,Builder,这个Java代码片段有什么问题 ClientRegistration registration = new ClientRegistration.Builder(properties.getClientId()) .authorizationUri(properties.getAuthorizationUri()) .build(); 我收到以下错误消息,但无法理解: error: Builder(String) has private access in Bu

这个Java代码片段有什么问题

ClientRegistration registration = new ClientRegistration.Builder(properties.getClientId())
        .authorizationUri(properties.getAuthorizationUri())
        .build();
我收到以下错误消息,但无法理解:

error: Builder(String) has private access in Builder
        ClientRegistration registration = new ClientRegistration.Builder(properties.getClientId())
                                          ^
据我所知,此错误通常由以下代码导致:

ClientRegistration registration = new ClientRegistration().Builder(properties.getClientId())
上面的代码就是这个问题的正确解决方案。但现在我的问题正好相反


有什么想法吗?

无法使用
new
关键字创建
ClientRegistration.Builder
,因为它的构造函数是私有的

你应该是:

ClientRegistration.Builder builder = ClientRegistration.withRegistrationId(registrationIdAsString)
这将为您创建一个新的
ClientRegistration.Builder

之后,您可以在
ClientRegistration.Builder
中设置字段,并调用
.build()
获取
ClientRegistration
。就像这样:

ClientRegistration registration = builder.authorizationUri(properties.getAuthorizationUri())
    .build();
查看构建器的JavaDocs,了解可以设置哪些属性:

或者在一行中,就像你做的那样:

ClientRegistration registration = ClientRegistration.withRegistrationId(properties.getClientId())
    .authorizationUri(properties.getAuthorizationUri())
    .build();

猜测在该内部构建器类中接受字符串的构造函数是私有的?然后:提供一个请。对不起,这不是猜测-这是一个教程中的代码。似乎是一个预发布代码BTW:thanx的提示。生成器(字符串)并不总是私有的,错误消息指出了错误的方向。再次:thanx-我现在明白我的问题不是模式(这就是为什么我认为提供的代码足够了),而是实现问题。