首页 文章

Java Lambda到Kotlin

提问于
浏览
0

我正在用Kotlin构建我的代码 .

我偶然发现在Kotlin使用Lambda的问题如下:

Java代码:

((UndertowEmbeddedServletContainerFactory) container)
        .addBuilderCustomizers(builder ->
        builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true));

使用通用接口实例化

((UndertowEmbeddedServletContainerFactory) container)
            .addBuilderCustomizers(new UndertowBuilderCustomizer() {
                @Override
                public void customize(Builder builder) {
                    builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
                }
            });

我在Kotlin的代码

val c: UndertowEmbeddedServletContainerFactory = (container as UndertowEmbeddedServletContainerFactory)
// Calling the Lambda
c.addBuilderCustomizers{ (b: Builder) -> b.setServerOption(UndertowOptions.ENABLE_HTTP2, true) }

它给了我一个语法错误:

此行中有多个标记 - 仅将值作为vararg传递到带括号的参数列表中 - 无法推断此参数的类型 . 请明确说明 .

这可能是正确的语法?

1 回答

  • 3

    你需要帮助Kotlin编译器并告诉它这个lambda的类型是什么 . 这段代码应该编译并正常工作:

    c.addBuilderCustomizers(UndertowBuilderCustomizer{ it.setServerOption(UndertowOptions.ENABLE_HTTP2, true)})
    

相关问题