• Java8 Lambda


    Lambda 实例

    1. 无参,无返回值
    // 以前的写法
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println("无参无返回值");
        }
    };
    // lambda 的写法
    Runnable runnable1 = () -> System.out.println("无参无返回值");
    
    1. 有一个参数,无返回值
    Consumer<String> consumer = x -> System.out.println(x);
    consumer.accept("有一个参数,没有返回值");
    
    1. 有两个参数,返回int
    Comparator<Integer> comparator = (x, y) -> {
        System.out.println("有两个参数,有返回值");
        return x.compareTo(y);
    };
    int compare = comparator.compare(5, 4);
    

    方法引用的三种语法格式

    Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致。

    1. 对象::实例方法
    // 1
    PrintStream printStream = System.out;
    Consumer<String> consumer = printStream::println;
    // 2
    UserTest userTest = new UserTest(1,"李四");
    Supplier<Integer> supplier = userTest::getId;
    supplier.get();
    
    1. 类::静态方法
    Comparator<Integer> comparator = Integer::compare;
    int compare = comparator.compare(3, 5);
    
    1. 类::实例方法
      参数列表的第一个参数是实例方法的调用者,第二参数是实例方法的参数时,可以用ClassName::method的方式。
    BiPredicate<String, String> biPredicate = String::equals;
    

    构造器引用

    1. 无参构造
    // 调用无参构造函数
    Supplier<UserTest> supplier = UserTest::new;
    
    1. 有参构造
    // 调用有两个参数的有参构造
    BiFunction<Integer, String, UserTest> function = UserTest::new;
    
    1. 数组引用
    // 以前的做法
    Function<Integer, String[]> function1 = (x) -> new String[x];
    String[] apply = function1.apply(10);
    // 现在的做法
    Function<Integer, String[]> function2 = String[]::new;
    String[] apply1 = function2.apply(10);
    
  • 相关阅读:
    对 Service中sqlsession对象的优化
    mybatis 接口绑定 和 动态SQL
    添加指定的日志信息
    数据库优化
    MyBatis 实现新增
    MyBatis中log4j 和 参数 和 分页和别名 功能
    OpenGL_混合
    android应用开发揭秘第13章01示例,移动图像,opengl绘制星星问题解决!
    《关于个人承接项目的注意事项》读后感
    Android OpenGL ES教程 第二部分 构建多边形
  • 原文地址:https://www.cnblogs.com/Godfunc/p/9208962.html
Copyright © 2020-2023  润新知