java.util.Function 或 Java 方法,哪一个是最佳实践?

标签 java java-8 functional-programming

假设我有一个 Java 方法,它接受一个参数并返回一些内容。

public Employee mapPersonToEmp(Person p) {
     ......
   return new Employee() ;
}

但是,如果我使用 Java 8 Function,我可以实现同样的目标。我的意思是,如果我创建以下函数,我将得到相同的行为。我的问题是推荐哪一款?自 Java 8 诞生以来,哪一种更好或最佳实践?

    Function<Person , Employee> function = p -> {
        ......
        return new Employee() ;
    } ; 

    Employee e = function.apply(new Person());

TIA。

最佳答案

Function<Person , Employee> function = p -> {
        ......
        return new Employee() ;
    } ; 

Employee e = function.apply(new Person());

Lambda 用于传递行为。 如果您的要求是可以使用 Person 类的不同字段来创建 Employee 对象,并且需要在整个代码中传递此行为,那么您可以使用如下所示的内容:-

Employee createEmpFromPerson(Function<Person, Employee> func) {
//this class already has a reference to some person object
return func.apply(person);
}

现在您可以通过以下方式调用它:-

createEmpFromPerson((per) -> new Employee(per.getName(), per.getEmail()));
createEmpFromPerson((per) -> new Employee(per.getName(), per.getAddress()));

这是一个非常简单的示例,旨在解释内置函数接口(interface)如何封装常见所需的行为。

显然,还有更好的例子,但我希望您能理解我想要解释的内容。

关于java.util.Function 或 Java 方法,哪一个是最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169963/

相关文章:

java - 命名查询根据包含某些值的列表(实例变量)查找所有实体

java - "Unresolved compilation problem"是什么意思?

functional-programming - 为什么没有明确类型的这个 Idris 片段类型检查?

java - 如何使用 Maven 下载 jar 的源代码?

java - 使用特定的对象属性来索引,使用 Map 结构

java - ForkJoinPool和异步IO

java - 使用流过滤集合以获取其属性在 Java 8 中出现 n 次的项目

java - 使用 Java 8 Optional<T>, Stream 遍历包含真实 boolean 字段值的对象列表

javascript - 获取与迭代器函数匹配的集合的第一个元素

algorithm - 借助幺半群将二次时间程序转换为线性时间程序?