【发布时间】:2018-10-02 22:29:23
【问题描述】:
我对“如何正确地做到这一点”有点困惑:
// 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)?但不确定是否有一个可选的参数是个好主意 -
@CarlosHeuberger 就是这样!
-
阅读 Java 变得不可能了..
-
@Tyvain
map和filter都是很好的解决方案。重新拥有Optional参数,不要屈服于majority opinion (minority report)。 ???如果你已经有了Optional<File>,则无需解压即可避免Optional参数。
标签: java lambda optional java-10