'AmazonS3Client'已弃用为'AmazonS3ClientBuilder.defaultClient()'

时间:2018-01-21 14:18:12

标签: amazon-web-services amazon-s3

AWS已将“新AmazonS3Client()”弃用为“AmazonS3ClientBuilder.defaultClient()”。 “new AmazonS3Client()”返回“AmazonS3Client”,而“AmazonS3ClientBuilder.defaultClient()”返回“AmazonS3”。

解决方案1:将'AmazonS3'对象转换为'AmazonS3Client',如: 方法((AmazonS3Client)AmazonS3ClientBuilder.defaultClient())

解决方案2:将参数从“AmazonS3Client”更改为“AmazonS3”,如: 现有代码:方法(AmazonS3Client amazonS3Client) 新代码:方法(AmazonS3 amazonS3)

但是我不太愿意改变解决方案2,因为改变这将花费我很多努力和测试时间。

问题/问:还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

我想说这些是你唯一的选择。从类层次结构中可以看出AmazonS3是一个接口,AmazonS3Client是它的一个实现(还有一个实现AmazonS3EncryptionClient)。始终建议program to an interface而不是编程到实现。这意味着您应该拥有(并且总是很好)类型AmazonS3

选项1

如果您对AmazonS3AmazonS3Client进行类型转换,它会对您有用,因为我并没有真正看到它返回AmazonS3的任何其他子类。但是避免这种情况是件好事,因为事情可能在未来发生变化(但亚马逊很可能不会这样做,因为他们会知道客户会采用这种方法 - 但如果他们愿意打破他们的客户,这是一个可能性。) / p>

<强>选项2

您的第二个选项是最好的,因为您不仅可以解决问题,还可以清理代码。