Builder在Builder中具有私有访问权限

问题描述 投票:0回答:1

这个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())

以上代码是解决问题的正确方法。但现在我反而遇到了问题。

任何的想法?

java builder
1个回答
2
投票

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

你应该是:

ClientRegistration.Builder builder = ClientRegistration.withRegistrationId(registrationIdAsString)

这为你创造了一个新的ClientRegistration.Builder

之后你可以在ClientRegistration.Builder中设置你的字段并调用.build()来获得你的ClientRegistration。像那样:

ClientRegistration registration = builder.authorizationUri(properties.getAuthorizationUri())
    .build();

查看构建器的JavaDocs以查看可以设置的属性:https://docs.spring.io/spring-security/site/docs/5.0.x/api/org/springframework/security/oauth2/client/registration/ClientRegistration.Builder.html

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

ClientRegistration registration = ClientRegistration.withRegistrationId(properties.getClientId())
    .authorizationUri(properties.getAuthorizationUri())
    .build();
© www.soinside.com 2019 - 2024. All rights reserved.