【发布时间】:2017-08-23 17:58:31
【问题描述】:
我正在使用 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 传递 允许在带括号的参数列表中 - 无法推断类型 这个参数。请明确说明。
这可能是什么正确的语法?
【问题讨论】:
-
尝试将 lambda 括在括号中。