2017-08-08 8 views
1

JavaからKotlinにプロジェクトを変換しようとしています。Java汎用のKotlinジェネリック。

私はこの使用のIntelliJ IDE変換RXJava 2

のJava

protected <T> ObservableTransformer<T, T> onNetworkError() { 
    return observable -> observable 
      .doOnError(throwable -> networkError.setValue(throwable)); 
} 

からObservableTransformer返すメソッドに捕まってしまったが、エラーがスローされます。 IDE

protected fun <T> onNetworkError(): ObservableTransformer<T, T> { 
    return { observable -> 
     observable 
       .doOnError({ throwable -> networkError.setValue(throwable) }) 
    } 
} 

を使用してKotlinへ

Javaの誰もがKotlinに上記のJavaコードを変換するためのアイデアを持っていますか?事前に

おかげ

答えて

1

は、あなたのコードは、未知のタイプのobservableを受け入れ、Observableオブジェクトを返す関数を返しています。

必要なラムダ式は次のようにする必要があります:上からBakaWaiiの応答にさらに

protected fun <T> onNetworkError(): ObservableTransformer<T, T> { 
    return ObservableTransformer { observable -> 
     observable 
       .doOnError({ throwable -> networkError.setValue(throwable) }) 
    } 
} 
1

次のように、あなたはさらにコードを単純化することができます

protected fun <T> onNetworkError(): ObservableTransformer<T, T> { 
    return ObservableTransformer { 
     it.doOnError { networkError.setValue(it) } 
    } 
} 

しかし、二つの異なるitを持ちます混乱するかもしれないので、明示的なパラメータとしてそれらの1つを残しておきたいかもしれません。

+1

ありがとうございます!私はいつもコードを単純化する方法を探しています。彼が最初に書いたように正しい答えとしてバカワイをマークしました。 – jegvetinte

+0

Upvoted。それは良い答えです。 – BakaWaii

関連する問題