2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用通用類型規(guī)范來強(qiáng)制getStringList
將其視為Collection<String>
:
return factor.filter(LambdaTest::someCondition) .<Collection<String>> map(LambdaTest::getStringList) .orElse(getStringSet());

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
不確定這是否明顯并在問題的后半部分說明,但您還可以做的是更改方法的簽名getStringList以返回 a Collection<String>,保持其實(shí)現(xiàn)與之前相同。
這樣完整的實(shí)現(xiàn)看起來像:
Collection<String> getStringList(final String factor) { ... }
Set<String> getStringSet() { ... }
private Collection<String> getStringCollection() {
Optional<String> factor = getFactor();
return factor.filter(this::someCondition)
.map(this::getStringList)
.orElseGet(this::getStringSet);
}
另一種選擇是初始化SetinorElse以返回Listusing new ArrayList<>:
private Collection<String> getStringCollection() {
Optional<String> factor = getFactor();
return factor.filter(this::someCondition)
.map(this::getStringList)
.orElse(new ArrayList<>(getStringSet()));
}
添加回答
舉報(bào)