Tag: lambda

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表达式

考虑下面的Java类: public class SomeClass { public interface Something { void doSomething(); } public void call(Something something) {} } 在Kotlin中,我可以使用lambda表达式,如下所示: SomeClass().call { // do something } 但是如果我在Kotlin中定义下面的方法(使用相同的接口): fun call(something: Something) {} 然后这个电话: call { // do something } 会产生一个类型不匹配的错误。 为什么?