使用可选项在Java流中处理null

Sam*_*ams 8 java null optional java-8

如果我们有如下所示的senario,那么处理null的最佳方法是什么

//mocking for demonstraton  
studentsByCourseRoster.setUsers(null);

studentsByCourseRoster.getUsers().stream().forEach(user -> {
    final UserDTOv2 userDTO = new UserDTOv2();
    userDTO.populateUserDataFromUserDTO(user, groupedUsers);
    users.add(userDTO);
});
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 6

如果要保留单个语句结构,可以使用Optional.ofNullable并替换null为空列表:

Optional.ofNullable(studentsByCourseRoster.getUsers())
        .orElse(Collections.emptyList())
        .forEach(user -> {
                     final UserDTOv2 userDTO = new UserDTOv2();
                     userDTO.populateUserDataFromUserDTO(user, groupedUsers);
                     users.add(userDTO);
         });
Run Code Online (Sandbox Code Playgroud)

  • 你不需要`.stream()`btw,事实上,这违反了`.stream()的规范 (2认同)