提问者:小点点

如何在ifPresent检查后返回值


我正试图返回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个答案

匿名用户

如果您希望您需要映射到其姓名的某个员工的任何姓名,则使用findfirstorelse

ifPresent将使用数据,并且仅当它们是数据时才使用:在这里,如果不存在,您希望返回并执行某些操作

public String getEmpName(EmployeeData empData) {
    return Optional.ofNullable(empData.getEmployees()).orElseGet(Collections::emptyList)
                   .stream().filter(Objects::nonNull)
                   .map(Employee::getName).findFirst().orElse("");
}