Я немного запутался в том, "как это сделать правильно":
// return true: if present and number of lines != 0
boolean isValid(Optional<File> optFile) {
return optFile.ifPresentOrElse(f -> return !isZeroLine(f), return false);
}
private boolean isZeroLine(File f) {
return MyFileUtils.getNbLinesByFile(f) == 0;
}
Я знаю, что синтаксис неверен и не компилируется, но это просто для того, чтобы вы поняли идею.
Как я могу превратить это в «чистый код»? то есть избегать делать:
if (optFile.isPresent()) {//} else {//}
optFile.map(this::isZeroLine).orElse(false)
? но не уверен, что наличие необязательных аргументов в качестве аргумента является хорошей идеей - person user85421   schedule 03.10.2018map
иfilter
являются хорошими решениями. Имея параметрOptional
, не поддавайтесь мнению большинства (отчет меньшинства). ???? Если у вас уже естьOptional<File>
, то распаковывать его не нужно, чтобы избежать параметраOptional
. - person Nicolai Parlog   schedule 03.10.2018