2017-08-23 6 views
0

私はKotlinで自分のコードを構築しています。Java Lambda to Kotlin

私は、次のとKotlinにラムダを使用して問題につまずいてきました:

Javaコード:共通のインターフェースのインスタンス化

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

((UndertowEmbeddedServletContainerFactory) container) 
     .addBuilderCustomizers(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) } 

文法エラーです:

Multiple markers at this line - Passing value as a vararg is only allowed inside a parenthesized argument list - Cannot infer a type for this parameter. Please specify it explicitly.

これには正しい構文はありますか?

+0

ラムダをかっこで囲んでみてください。 –

答えて

1

あなたはKotlinコンパイラを少し助けて、このラムダのタイプを教えてください。このコードはコンパイルして正常に動作するはずです。

+0

それは、ありがとう! –

+0

私は知っている;)Undertow - 良い選択! :D –