Java F.

时间:2017-10-13 20:36:01

标签: java lambda playframework

我必须在离开的同事的代码中解决一些问题,因此我需要非常快速地学习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));
}

0 个答案:

没有答案