我有两个功能 - 一个返回Set<String>,另一个返回List<String>。
private static List<String> getStringList(final String factor) {
....
}
private static Set<String> getStringSet() {
....
}
现在,我有一个返回 a 的函数Collection<String>,它会根据特定条件依次调用上述函数。我想做这样的事情:
private static Collection<String> getStringCollection() {
Optional<String> factor = getFactor();
return factor.filter(LambdaTest::someCondition)
.map(LambdaTest::getStringList)
.orElse(getStringSet());
}
但我得到这个错误
错误:(24, 37) java: 类型不兼容:java.util.Set 无法转换为 java.util.List
我能理解这里发生了什么。但是,有没有一种方法可以在不进行像这样精心设计的 if-else 语句的情况下实现类似的效果呢?
private static Collection<String> getStringCollection() {
Optional<String> factor = getFactor();
if(factor.isPresent() && someCondition(factor.get())) {
return getStringList(factor.get());
}
return getStringSet();
}
肥皂起泡泡
达令说
相关分类