Optional在实际项目中有多种应用场景,以下是一些典型的例子:
Optional<User> optionalUser = Optional.ofNullable(user);
optionalUser.ifPresent(user -> System.out.println(user.getName()));
Optional<User> optionalUser = Optional.ofNullable(userService.findById(userId));
Optional<Address> optionalAddress = optionalUser.flatMap(user -> Optional.ofNullable(user.getAddress()));
optionalAddress.ifPresent(address -> System.out.println(address.getCity()));
Function<User, Optional<Address>> getUserAddress = user -> Optional.ofNullable(user.getAddress());
Function<Address, Optional<String>> getCity = address -> Optional.ofNullable(address.getCity());
Optional<User> optionalUser = Optional.ofNullable(userService.findById(userId));
Optional<String> city = optionalUser.flatMap(getUserAddress).flatMap(getCity);
city.ifPresent(System.out::println);
public Optional<User> findUserById(Long id) {
return userRepository.findById(id);
}
Optional<String> apiKey = Optional.ofNullable(config.get("apiKey"));
apiKey.ifPresent(key -> System.out.println("API Key: " + key));
List<User> users = userService.findAll();
List<String> cities = users.stream()
.map(User::getAddress)
.map(Address::getCity)
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
Optional<String> userId = Optional.ofNullable(request.getHeader("userId"));
logger.info("Processing request for user: {}", userId.orElse("unknown"));
Optional<String> optionalName = Optional.ofNullable(user.getName());
String name = optionalName.orElse("Anonymous");
通过这些应用案例可以看出,Optional在实际项目中能够有效地提高代码的可读性和健壮性,减少空指针异常的发生,并简化复杂的逻辑处理。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。