我正在用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 回答
你需要帮助Kotlin编译器并告诉它这个lambda的类型是什么 . 这段代码应该编译并正常工作: