2 回答

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

TA貢獻1821條經驗 獲得超6個贊
不確定這是否明顯并在問題的后半部分說明,但您還可以做的是更改方法的簽名getStringList以返回 a Collection<String>,保持其實現與之前相同。
這樣完整的實現看起來像:
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()));
}
添加回答
舉報