Java Lambda到Kotlin

我正在用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) } 

这给我一个语法错误:

在这一行有多个标记 – 只允许将值作为可变参数传递在括号内的参数列表中 – 不能推断出这个参数的类型。 请明确指定。

什么可能是正确的语法呢?

你需要帮助Kotlin编译器,告诉它这个lambda是什么类型的。 这段代码应该编译并工作得很好:

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