zoukankan      html  css  js  c++  java
  • java8-从Lamda到方法引用和构造引用

    一方法引用概述

    经过前面2章Lamda原理引入和Lamda解析,基本就会熟练使用Lamda表达式,这次我们更深入点。来了解一下方法引用。
    方法引用是特定Lamda表达式的一种简写,其思路就是能替换Lamda表达式就直接调用函数使用方法名。
    其语法格式:类名 :: 方法名。

    二3种方法引用

    1 指向静态方法的引用

    语法格式: 静态类名(ClassName)::方法名(MethodName)
    示例:

        // 1 Lamda静态方法
        @Test
        public void LamdaSTest(){
            String youku1327 = "1327";
            Function function = s -> ObjectUtils.allNotNull(youku1327);
            System.out.println(function.apply(youku1327));// true
    
        }
        // 静态方法引用
        @Test
        public void MethodRefTest(){
            String youku1327 = "youku1327";
            Function function = ObjectUtils::allNotNull;
            System.out.println(function.apply(youku1327));// true
        }
    

    2 指向对象实例的方法的引用

    语法格式:实例名称(instanceName)::方法名称(MethodName)
    这个对象指的是非入参的外部对象
    示例:

        // 2 Lamda表达式
        @Test
        public void ObjectLamdaTest(){
            Car car = new Car("100", "black", "中国", 20);
            Supplier supplier = ()-> car.getColor();
            System.out.println(supplier.get());//black
        }
        // 对象引用
        @Test
        public void ObjectRefTest(){
            Car car = new Car("100", "black", "中国", 20);
            Supplier<String> supplier = car::getColor;
            System.out.println(supplier.get());//black
        }
    

    3 指向实例的方法引用

    语法格式:对象名称(ClassName)::方法名称(Method)
    这个对象指的是入参对象

        //3 Lamda表达式
        @Test
        public void InstanceMethodLamdaTest(){
            Car car = new Car("100", "black", "中国", 20);
            Function<Car,String> function = s -> s.getColor();
            System.out.println(function.apply(car));//black
        }
    
        @Test
        public void InstanceMethodRefTest(){
            Car car = new Car("100", "black", "中国", 20);
            Function<Car,String> function = Car::getColor;
            System.out.println(function.apply(car));//black
        }
    

    三构造器引用

    语法格式:对象名称(ClassName)::new

        @Test
        public void constructLamdaTest(){
            BiFunction<String,Double,Car> biFunction = (s, aDouble) -> new Car(s,aDouble);
            Car car = biFunction.apply("youku1327", 50.0);
            // Car(code=youku1327, color=null, factory=null, price=50.0)
            System.out.println(car);
        }
    
        @Test
        public void construcMethodRefTest(){
            BiFunction<String,Double,Car> biFunction = Car::new;
            Car car = biFunction.apply("youku1327", 50.0);
            // Car(code=youku1327, color=null, factory=null, price=50.0)
            System.out.println(car);
        }
    

    四微信公众号

    觉得我写的不错的可以关注下微信公众号,更加系统的学习,下一阶段我们就进入Stream流。

    在这里插入图片描述

  • 相关阅读:
    php环境配置中各个模块在网站建设中的功能
    PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
    August 17th 2017 Week 33rd Thursday
    August 16th 2017 Week 33rd Wednesday
    August 15th 2017 Week 33rd Tuesday
    August 14th 2017 Week 33rd Monday
    August 13th 2017 Week 33rd Sunday
    August 12th 2017 Week 32nd Saturday
    August 11th 2017 Week 32nd Friday
    August 10th 2017 Week 32nd Thursday
  • 原文地址:https://www.cnblogs.com/zszxz/p/12066877.html
Copyright © 2011-2022 走看看