为什么要使用Consumer
public Consumer<String> setValue();
而不是直接函数调用
public void setValue(String value);
for setters?
我只看到缺点:
Consumer
变体的另一个缺点是,调用代码必须始终显式处理异常
try {
instance.setValue().accept("newValue");
} catch (Exception e) {
// handle exception
}
答案 0 :(得分:1)
Consumer
是一个主要供RxJava内部使用的接口。由于您开始使用RxJava,因此您不必担心它。
RxJava的全部目的是流式传输数据,使用的越多,处理状态或使用setter的次数就越少。
答案 1 :(得分:1)
如果由于某种原因无法使用方法参考,则必须使用Consumer
:例如当您定位较旧的Android版本时,不支持Java8
注意:使用new Android toolchain,直接支持Java8方法引用(即使没有Retrolambda等),因此不再需要这样做。
感谢杰克沃顿在rx-preferences #96
回答