Приведение требуется, так как вы используете необработанную переменную Stream
.Предполагая, что getEidStream()
возвращает Stream<String>
, вы должны были присвоить его переменной Stream<String>
или вообще не назначать ее переменной.
Использование forEach
отрицает цель использования Stream
s в первую очередь.
Вы должны использовать filter
и map
, чтобы преобразовать Stream
для хранения необходимых элементов, а затем собрать в Set
.
Set<String> declinedRecords =
getEidStream().map(eid -> getERecordFromId(eid))
.filter(eRecord -> eRecord.getEHash() != null && Status.DECLINED == eRecord.getStatus())
.map(ERecord::getEHash)
.collect(Collectors.toSet());