我必须在离开的同事的代码中解决一些问题,因此我需要非常快速地学习Play框架(版本play_2.10-2.3.2)。
以下两段代码的区别究竟是什么?它实际上是相同的,还是有一些我不明白的东西?
如果存在差异,您何时会使用代码段1和代码段2?
如果没有区别,为什么Play Framework发明F.Function.apply
时可以使用常规lambda表达式轻松实现同样的事情?
片段-1
@Test
public void testObjectToObjectMqpWithApplyPromise() {
Staff staff = new Staff("mkyong", 30, new BigDecimal(10000));
F.Promise<Staff> staffPromise = F.Promise.pure(staff);
F.Promise<StaffPublic> publicStaffPromise = staffPromise.map(new F.Function<Staff, StaffPublic>() {
public StaffPublic apply(Staff o) {
StaffPublic staffPublic = new StaffPublic();
staffPublic.setName(staff.getName());
staffPublic.setAge(staff.getAge());
if ("mkyong".equals(staff.getName())) {
staffPublic.setExtra("this field is for mkyong only!");
}
return staffPublic;
}
});
System.out.println(publicStaffPromise.get(timeout));
}
片段-2
@Test
public void testObjectToObjectMqpWithLambda() {
Staff staff = new Staff("mkyong", 30, new BigDecimal(10000));
F.Promise<Staff> staffPromise = F.Promise.pure(staff);
F.Promise<StaffPublic> publicStaffPromise = staffPromise.map(internalStaff -> {
StaffPublic staffPublic = new StaffPublic();
staffPublic.setName(staff.getName());
staffPublic.setAge(staff.getAge());
if ("mkyong".equals(staff.getName())) {
staffPublic.setExtra("this field is for mkyong only!");
}
return staffPublic;
});
System.out.println(publicStaffPromise.get(timeout));
}