美文网首页
函数式接口 + Lambda实现函数指针

函数式接口 + Lambda实现函数指针

作者: hei禹 | 来源:发表于2018-09-29 23:49 被阅读0次

坏味道:

Long count = 0L;
List<Result> list = new ArrayList<>();

if (type == 0) {
    count = dao.pageCountA(query);
    if (count == 0) {
        return;
    }
    list = dao.pageQueryA(query);
    
} else {
    count = dao.pageCountB(query);
    if (count == 0) {
        return;
    }
    list = dao.pageQueryB(query);
}

坏味道:相同的代码多次出现

函数式接口 + Lambda实现类似功能:

函数式接口定义:

@FunctionalInterface
public interface PageCountHelper {
    Long pageCount(Query query);
}

@FunctionalInterface
public interface PageQueryHelper {
    List<Result> pageQuery(Query query);
}

配合Lambda使用:

PageCountHelper pageCountHelper = (Query query) -> dao.pageCountA(query);
PageQueryHelper pageQueryHelper = (Query query) -> dao.pageQueryA(query);

if (type != 0) {
    pageCountHelper = (Query query) -> dao.pageCountB(query);
    pageQueryHelper = (Query query) -> dao.pageQueryB(query);
}

Long count = pageCountHelper.pageCount(query);
if (count == 0) {
    return;
}
List<Result> result = pageQueryHelper.pageQuery(query);
参考资料:

1、函数式接口@FunctionalInterface

相关文章

  • 函数式接口 + Lambda实现函数指针

    坏味道: 坏味道:相同的代码多次出现 函数式接口 + Lambda实现类似功能: 函数式接口定义: 配合Lambd...

  • java8 Lambda 表达式

    函数式接口 函数式接口是指接口中只有一个需要实现的方法。例如Runnable接口: Lambda 表达式 基本格式...

  • Lambda表达式和Stream

    基本概念 Lambda表达式只能实现函数式接口函数式接口就是只有一个抽象方法的接口除此之外,函数式接口可以有默认方...

  • JDK1.8新特性(超详细)

    Java函数式设计 实现方法: @FunctionalInterface接口 Lambda语法 方法引用 接口de...

  • Lambda 几个函数式接口

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • Java8 函数式接口 与 Lambda 及 方法引用

    函数式接口 Lambda 表达式只能在函数式接口上操作,函数式接口是具有单个抽象方法的接口,也称为 SAM(Sin...

  • 函数式接口

    函数式接口 Lambda基本语法:() -> 函数式接口 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接...

  • jdk8新特性-方法引用

    简单实例,解决Lambda表达式的冗余 定义函数式接口 调用函数式接口 使用对象名引用成员变量 函数式接口 创建对...

  • JDK8 新特性 快速理解

    基础语法 Lambda需要函数式接口支持 接口用@Functiona1Interface修饰,就是函数式接口 La...

网友评论

      本文标题:函数式接口 + Lambda实现函数指针

      本文链接:https://www.haomeiwen.com/subject/bqdioftx.html