2017-06-02 13 views
1

なぜあなたはセッターのためのConsumerセッター:ダイレクトメソッド呼び出し対消費者

public Consumer<String> setValue(); 

の代わりに、直接関数呼び出し

public void setValue(String value); 

を使うのでしょうか?

私は唯一の欠点を参照してください。

  • 直接メソッド呼び出しは、より読みやすい
  • Consumerバリアントの別の欠点は、呼び出し元のコードは常に明示的に

    try { 
        instance.setValue().accept("newValue"); 
    } catch (Exception e) { 
        // handle exception 
    } 
    
例外を処理しなければならないこと、です
+0

何が文脈ですか?どこでそれを使う必要がありますか? – yosriz

+0

@yosriz:それはまさに私の質問です。私はちょうどRxJavaを使い始めています。私はこれをどこかで見たことがあります。おそらくブログ投稿やexample-appにあります。残念ながら私はもうこのソースを見つけることができません。おそらく、rx-flowで組み合わせる方が簡単でしょう。 – TmTron

答えて

1

Consumerは、主に社内向けのインターフェイスですhin RxJava。 RxJavaを使い始めているので、心配する必要はありません。

RxJavaの全目的は、データを流すことです。使用する設定が少ないほど、またはセッターを使用するほどです。

1

何らかの理由でメソッド参照を使用できない場合は、Consumerを使用する必要があります。古いAndroidバージョンをターゲットにすると、Java 8はサポートされません。
注:new Android toolchainでは、Java8メソッド参照は(Retrolambdaなどがなくても)直接サポートされているため、これはもう必要ありません。

回答したJake Whartonに感謝します。rx-preferences #96

関連する問題