gpt4 book ai didi

用于设置默认 AWS 客户端的 Java 泛型

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:41 24 4
gpt4 key购买 nike

我希望能够为在我们的 AWS 后端创建的所有服务客户端实现不同的 httpClient 设置和 credentialsProvider。为此,我想使用 Java 泛型。

每当有人创建一个新的服务客户端时,我都想像这样使用它:

    S3Client s3client = setupAwsClient(S3Client.builder())
.region(Region.EU_WEST_1)
.build();

我的 setupAwsClient 的未编译实现如下所示:

public <T extends AwsSyncClientBuilder<SdkSyncClientBuilder<...>, SdkClient> & BaseClientBuilder<S3ClientBuilder, SdkClient> T setupAwsClient(T client) {

return client
.credentialsProvider(credentialsProvider)
.httpClient(awsBaseClient);
}

问题是我必须指定的接口(interface)太多,功能看起来一团糟。

我的问题是:在 AWS SDK 中的所有服务客户端之间实现某些设置的简洁方法是什么?泛型是一个好的解决方案还是有更好的方法?

更新:
public <T extends AwsSyncClientBuilder<?,?> & AwsClientBuilder<?, ?>> T setup(T clientBuilder) {

}

尝试这个也不行。即使 AwsClientBuilder 提供了 credentialsProviderAwsSyncClientBuilder 也提供了 httpClient

最佳答案

这就是您要找的东西吗?

public <T extends AwsSyncClientBuilder<?, ?>> T setup(T clientBuilder) {
/* Do stuff to client */
return clientBuilder;
}

或者如果您希望设置方法调用构建:

public <C, T extends AwsSyncClientBuilder<?, C>> C setup(T clientBuilder) {
/* Do stuff to client */
return clientBuilder.build();
}

关于用于设置默认 AWS 客户端的 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54292643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com