У меня есть две функции - одна возвращает Set<String>
, а другая возвращает List<String>
.
private static List<String> getStringList(final String factor) {
....
}
private static Set<String> getStringSet() {
....
}
Теперь у меня есть функция для возврата 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. Набор не может быть преобразован в java.util.List
Я могу понять, что здесь происходит. Но есть ли способ достичь чего-то подобного, не выполняя такого сложного утверждения, как это?
private static Collection<String> getStringCollection() {
Optional<String> factor = getFactor();
if(factor.isPresent() && someCondition(factor.get())) {
return getStringList(factor.get());
}
return getStringSet();
}