Function Java函数链接

Function Java函数链接,function,java-8,Function,Java 8,我试图找出以下代码无法编译的原因: Function<Employee, String> getLastName = (Employee employee) -> { return employee.getName().substring(employee.getName().indexOf(" ") + 1); }; Function<Employee, String> getFirstName = (Employee employee) -> {

我试图找出以下代码无法编译的原因:

Function<Employee, String> getLastName = (Employee employee) -> {
    return employee.getName().substring(employee.getName().indexOf(" ") + 1);
};

Function<Employee, String> getFirstName = (Employee employee) -> {
    return employee.getName().substring(0, employee.getName().indexOf(" "));
};

Function chained = getFirstName.apply(employees.get(2).andThen(getFirstName.apply(employees.get(2)))); 
函数getLastName=(雇员)->{
返回employee.getName()子字符串(employee.getName().indexOf(“”+1);
};
函数getFirstName=(员工)->{
返回employee.getName()子字符串(0,employee.getName().indexOf(“”);
};
函数chained=getFirstName.apply(employees.get(2).和getFirstName.apply(employees.get(2));

难道不是所有函数都可以在java 8中使用吗?

准确地说,
然后将
应用于该
函数的结果,例如:

Function<Employee, String> chained = getFirstName.andThen(x -> x.toUpperCase());

是否每个函数只能返回一项?在这种情况下,chained将尝试返回2?我想我已经找到了原因:与上述类似,chained的每个函数都对之前的结果进行操作,因此在这种情况下,这是不合理的代码。很好的解释。
 Function<Employee, String[]> bothFunction = (Employee employee) -> {
        String[] both = new String[2];
        both[0] = employee.getName().substring(employee.getName().indexOf(" ") + 1);
        both[1] = employee.getName().substring(0, employee.getName().indexOf(" "));
        return both;
    };