Setters:消费者与直接方法调用

时间:2017-06-02 09:49:25

标签: rx-java2

为什么要使用Consumer

public Consumer<String> setValue();

而不是直接函数调用

public void setValue(String value);

for setters?

我只看到缺点:

  • 直接方法调用更具可读性
  • Consumer变体的另一个缺点是,调用代码必须始终显式处理异常

    try {
        instance.setValue().accept("newValue");
    } catch (Exception e) {
        // handle exception
    }
    

2 个答案:

答案 0 :(得分:1)

Consumer是一个主要供RxJava内部使用的接口。由于您开始使用RxJava,因此您不必担心它。

RxJava的全部目的是流式传输数据,使用的越多,处理状态或使用setter的次数就越少。

答案 1 :(得分:1)

如果由于某种原因无法使用方法参考,则必须使用Consumer:例如当您定位较旧的Android版本时,不支持Java8 注意:使用new Android toolchain,直接支持Java8方法引用(即使没有Retrolambda等),因此不再需要这样做。

感谢杰克沃顿在rx-preferences #96

回答