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;
};