我有员工类:
public class Employee {
private Long id;
private String name;
private String externalId;
public Employee(Long id, String name, String externalId) {
this.id = id;
this.name = name;
this.externalId = externalId;
}
//getters, setter
}
返回员工的员工服务(可以为NULL)。
private void performEmployeeProcessing() {
Long employeeId = 2L;
Object o = Optional.ofNullable(employeeService.getById(employeeId))
.orElseGet(Employee::new, 1L, "", "");
System.out.println(o);
}
它说编译错误
员工::新,1L,"",""
无法解析构造函数。
答案 0 :(得分:8)
使用for slice in v.iter().collect::<Vec<_>>().chunks(2) {
println!("{:?}", slice);
}
for slice in v.iter().collect::<Vec<_>>().windows(2) {
println!("{:?}", slice);
}
:
Supplier
仅供参考,.orElseGet(() -> new Employee( 1L, "", ""));
实例只有在实际需要时才会创建。
如果你的构造函数没有args,你可以使用方法引用Employee
。如果创建工厂方法,仍然可以使用方法引用:
Employee::new
然后你可以:
class Employee {
// rest of class
public static Employee createDummy() {
return new Employee( 1L, "", "");
}
}
工厂方法实际上可以在任何类中。
答案 1 :(得分:0)
使用此:
.orElseGet(new Employee( 1L, "", ""));