Bdhar:
1を返す-私は2つの機能があります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.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();
}
Mureinik:
あなたは強制的にジェネリック型指定を使用することができますgetStringList
として扱われますCollection<String>
。
return factor.filter(LambdaTest::someCondition)
.<Collection<String>> map(LambdaTest::getStringList)
.orElse(getStringSet());