java - Java8::flatMap 可选
问题描述
I am new to Java8. In recent project I am trying Optional with map and flatmap to prevent NPE.
我用 Optional 尝试了 map 和 flatmap ,但是当我使用 flatMap 时,编译器给出了错误。
public class Project {
private ApplicationType applciationType;
}
@Getter
@Setter
public class ApplicationType {
public String getDirectory() {
return "Inside my directory";
}
}
public class Driver {
public static void main(String[] args) {
ApplicationType appType = new ApplicationType();
Project project = new Project(appType);
//When using map its running fine.
Optional.ofNullable(project)
.map(prjct-> prjct.getApplciationType())
.map(appType1 -> appType1.getDirectory())
.ifPresent(e -> System.out.println(e));
//When using flatMap.. comiplation error.
Optional.ofNullable(project)
.map(prjct-> prjct.getApplciationType())
.flatMap(appType1 -> appType1.getDirectory())
.ifPresent(e -> System.out.println(e));
}
}
抱歉,如果我在这里遗漏了一些基本的东西。只是尝试在未来的项目中学习和实现 java8 功能。
我得到的编译错误-> [无法推断 flatMap(Function>) 的类型参数]
解决方案
的目的是从功能Optional.flatMap()
中解开包装。Optional
例如,如果你getDirectory
返回Optional<String>
,那么.map()
call 会给你Optional<Optional<String>>
,但如果你使用flatMap()
- 它只会给你Optional<String>
。
推荐阅读
- reactjs - React,除主页外的每个页面都使用导航栏布局
- javascript - 与文件上传无关的“字段值太长”错误
- python - Python 找不到嵌套包 - ModuleNotFoundError
- reactjs - 如何从 React-east-state 中的 autoEffect 中排除商店元素?
- python - 如何使用 tf.argmax 的结果来访问对应位置的值?
- python - 对于每 1000 行,插入新的递增日期 python pandas
- python - 在 git repo 中获取特定本地文件的所有提交
- javascript - 从 JSON 获取数据到 JS
- html - Navbar-固定响应式导航栏
- statistics - 如何在 SAS 中使用 proc 报表调整发布式报表?