使用rxjava简化多个'if'

时间:2016-06-01 08:21:27

标签: refactoring rx-java

我应该使用哪种RxJava操作将这个混乱重写为更简单的版本?

.map(content -> {
                    if (content.getPost() != null) {
                        return content.getPost();
                    } else if (content.getAction() != null) {
                        return content.getAction().getPost();
                    } else {
                        return null;
                    }
                })

这样的东西
.map(Content::getPost)
.map(Content::getAction::getPost)
.combine( .. )

有可能吗?

1 个答案:

答案 0 :(得分:1)

几乎akarnokd所说的除了你可以使用

过滤掉空的后发射
 .filter(content -> (content.getPost() != null) || ((content.getAction() != null) && (content.getAction().getPost())))
 .map(content -> (content.getPost() != null ? content.getPost() : content.getAction().getPost()))