Как вернуть значение после проверки ifPresent - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь вернуть empName, если оно есть или пустая строка, но я не могу вернуться. После того, как ifPresent не позволяет мне возвращать значение, пожалуйста, помогите с синтаксисом.

Это моя структура

import java.util.List;

public class EmployeeData {
    
    private List<Employee> employees = null;

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }

}

Это мой класс сотрудников

public class Employee {
    
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Моя тестовая программа

import java.util.Collections;
import java.util.Optional;

public class Test {

    public static void main(String args[]) {    
        EmployeeData empData = new EmployeeData();
    }

    public String getEmpName(EmployeeData empData)
    {
          Optional.ofNullable(empData.getEmployees()).orElseGet(Collections::emptyList)
                  .stream().findFirst().ifPresent( 
                            return   emp->emp.getName();
                  )).orElse{
                            return "";            
                   }
    }

}

1 Ответ

1 голос
/ 21 июня 2020

Если вы хотите, чтобы какое-либо имя одного из сотрудников вам нужно было map к их имени, используйте findFirst и orElse.

ifPresent используется для использования данных и только если это данные: здесь вы хотите вернуть и сделать что-нибудь, если его нет

public String getEmpName(EmployeeData empData) {
    return Optional.ofNullable(empData.getEmployees()).orElseGet(Collections::emptyList)
                   .stream().filter(Objects::nonNull)
                   .map(Employee::getName).findFirst().orElse("");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...