3

在我的 CF 项目中,我正在使用 AWS Java 2.0 SDK,并且我正在尝试实现异步多部分上传,但在设置方面遇到了一些麻烦,特别是在创建BiConsumer Interface.

文档:createMultipartUpload(CreateMultipartUploadRequest createMultipartUploadRequest)

要开始这个过程,我必须调用a3AsyncInterface.createMultipartUpload(),所以我创建一个CreateMultipartUploadRequest对象并将该对象传递给我的调用:

oCreateMultipartUploadRequest = createObject( 'java', 'software.amazon.awssdk.services.s3.model.CreateMultipartUploadRequest' ).builder()
                                .bucket( ARGUMENTS.bucket )
                                .key( ARGUMENTS.key )
                                .contentType( ARGUMENTS.fileMimeType )
                                .build();

oCreateMultipartUploadResponse = s3AsyncInterface.createMultipartUpload( oCreateMultipartUploadRequest );

所以到目前为止,这一切都很好。我的调用返回 type 的响应对象CompletableFuture<CreateMultipartUploadResponse>,但这就是它开始崩溃的地方。

CompletableFuture,我想调用它的.whenComplete()方法,但我不知道如何成功地做到这一点。

.whenComplete()方法采用类型BiConsumer<? super T,? super Throwable>docs)的对象,我不知道如何创建该对象。BiConsumer 是一个 Java 接口,因此它没有构造函数。我可以创建一个对象没问题,但这似乎并没有削减它。

oBiConsumer = createObject( 'java', 'java.util.function.BiConsumer' );

我无法.accept( t, u )在此 BiConsumer 对象上调用该方法,因为我认为我没有正确设置它。它的.andThen()方法需要另一个 BiConsumer 对象,所以我仍然必须首先弄清楚它。

所以我想我想在 Coldfusion 中做的是这样的(Java 中的示例):

BiConsumer< List<Integer>, List<Integer> > equals = ( list1, list2 ) ->
{
    if ( list1.size() != list2.size() ) {
        System.out.println( 'False' );
    } else {
        for ( int i = 0; i < list1.size(); i++ ) {
            if ( list1.get( i ) != list2.get( i ) ) {
                System.out.println( 'False' );
                return;
            }
        }
        System.out.println( 'True' );
    }
};
equals.accept( lista, listb );

不确定我是否需要以.accept()正确的方式调用该方法,或者当我将参数传递给.whenComplete(). 我可能在执行这个特定操作时都错了,但没关系,当我到达那里时我可以弄清楚。我仍然想弄清楚如何正确设置 BiConsumer 对象,这似乎是 Java 中的一种流行模式,我希望能够使用它。

我希望能够做的是这样的事情:

oBiConsumer = createObject( 'java', 'java.util.function.BiConsumer<T, U>' );

但这似乎不受支持,我不确定是否有不同的语法来完成同样的事情。

我知道我可以继续创建动态代理和自定义 .jar 来创建/构建此功能,但这是唯一的出路吗?如果可能的话,我非常希望不必这样做;臭气熏天。

任何建议,将不胜感激。

4

0 回答 0