如何从 ifpresent in java8 中 return 进行 Optional<T> 空指针检查?
How to return from ifpresent in java8 for Optional<T> null pointer checks?
我有一段不安全的代码可能会引发 nullPtr 异常:
Type t = objParam.getProject().getType();
我如何使用 java 8 可选和 ifpresent() 来安全地 return 最少的代码量(一个衬里)?
// How can I modify this to return from the ifPresent()...or a better way in
// java8? how can I just return a string from the ifPresent() method?
// instead of on a separate if(...isPresent) <make the assignment>?
//
Optional<Obj> obj = Optional.ofNullable(objParam);
Optional<String> typeName = obj
.map(Project::getProject)
.map(Type::getType).ifPresent().getName(); // ??? how to get the type name ???
Optional.map
的功能是它 returns 一个 Optional
只有在原始变量也 isPresent
时才有值。所以我怀疑你只是想要:
obj.map(Obj::getProject).map(Project::getType).map(Type::getName);
请注意,ifPresent
有一个完全不同的目的:它允许 Consumer
到 accept
一个只有存在的值。所以对于像这样的东西:
...map(Type::getName).ifPresent(System.out::println);
我有一段不安全的代码可能会引发 nullPtr 异常:
Type t = objParam.getProject().getType();
我如何使用 java 8 可选和 ifpresent() 来安全地 return 最少的代码量(一个衬里)?
// How can I modify this to return from the ifPresent()...or a better way in
// java8? how can I just return a string from the ifPresent() method?
// instead of on a separate if(...isPresent) <make the assignment>?
//
Optional<Obj> obj = Optional.ofNullable(objParam);
Optional<String> typeName = obj
.map(Project::getProject)
.map(Type::getType).ifPresent().getName(); // ??? how to get the type name ???
Optional.map
的功能是它 returns 一个 Optional
只有在原始变量也 isPresent
时才有值。所以我怀疑你只是想要:
obj.map(Obj::getProject).map(Project::getType).map(Type::getName);
请注意,ifPresent
有一个完全不同的目的:它允许 Consumer
到 accept
一个只有存在的值。所以对于像这样的东西:
...map(Type::getName).ifPresent(System.out::println);