在Coldfusion中使用类型参数创建Java接口

在Coldfusion中使用类型参数创建Java接口,java,coldfusion,lucee,aws-sdk-java-2.0,Java,Coldfusion,Lucee,Aws Sdk Java 2.0,在我的CF项目中,我正在使用AWS Java 2.0 SDK,并试图实现一个异步多部分上传,但我在设置东西时遇到了一些问题,特别是在创建双消费者界面时 文件: 要启动此过程,我必须调用a3AsyncInterface.createMultipartPload(),因此我创建了一个createMultipartPloadRequest对象,并将该对象传递到我的调用中: oCreateMultipartUploadRequest = createObject( 'java', 'software.a

在我的CF项目中,我正在使用AWS Java 2.0 SDK,并试图实现一个异步多部分上传,但我在设置东西时遇到了一些问题,特别是在创建
双消费者界面时

文件:

要启动此过程,我必须调用
a3AsyncInterface.createMultipartPload()
,因此我创建了一个
createMultipartPloadRequest
对象,并将该对象传递到我的调用中:

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 );
到目前为止,这一切都非常有效。我的调用返回一个类型为
CompletableFuture
的响应对象,但这里是它开始崩溃的地方

CompletableFuture
中,我想调用它的
.whenComplete()
方法,但我不知道如何成功地执行此操作


.whenComplete()
方法接受类型为
BiConsumer
的对象,因此它没有构造函数。
是的,接口什么都不做,因为它们没有实现或“后面的代码”。您必须通过创建实现接口的类来提供这一点。要么编写自定义java类,要么使用CF代码,并使用cfcomponent和CFCDynamicProxy实现该接口。是的,我遵循该接口。问题是,使用CFC DynamicProxy是我唯一的出路吗?我希望能有其他一些巧妙的方法来实现这一点,而不必走那条路。好吧,唯一的选择是用java编写,或者用CF编写,然后使用CFCDynamicProxy。使用代理有什么问题?:-)我对AdobeCF比较熟悉,但除了一两个额外的函数调用之外,支持代码是纯CF,整个“类型”问题比java中的问题要小(因为CF是松散类型的)。不像内联java示例那样流畅,但肯定比创建自定义jar简单得多。
oBiConsumer = createObject( 'java', 'java.util.function.BiConsumer' );
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 );
oBiConsumer = createObject( 'java', 'java.util.function.BiConsumer<T, U>' );