zoukankan      html  css  js  c++  java
  • lambda表达式之方法引用

    /**
     * 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。<br>
     * 与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
    *@date:2018年7月9日
    *@author:zhangfs
    */
    public class Car {
    
        public static Car create(final Supplier<Car> supplier) {
            return supplier.get();
    
        }
    
        public static void collide(final Car car) {
            System.out.println("Collided " + car.toString());
        }
    
        public void follow(final Car another) {
            System.out.println("Following the " + another.toString());
        }
    
        public void repair() {
            System.out.println("Repaired " + this.toString());
        }
        /**
         * 构造器引用<br>
         * 语法是Class::new,或者更一般的Class< T >::new。请注意构造器没有参数
         */
        @Test
        public void constructorRef() {
             Car car=Car.create(Car::new);
             car.repair();
        }
        
        /**
         * 类的静态方法引用<br>
         * 语法是Class::static_method。请注意这个方法接受一个Car类型的参数。
         */
        @Test
        public void staticMethodRef() {
            final Car car = Car.create( Car::new );
            final List< Car > cars = Arrays.asList( car );
    //        Car::collide();
            cars.forEach( Car::collide );
        }
        /**类的方法引用<br>
         * 语法是Class::method。请注意,这个方法没有参数
         */
        @Test
        public void commonMethodRef() {
            final Car car = Car.create( Car::new );
            final List< Car > cars = Arrays.asList( car );
    //        Car::collide();
            cars.forEach( Car::repair );
        }
        
        /**
         * 对象的方法引用<br>
         * 语法是instance::method。请注意,这个方法接受一个Car类型的参数
         */
        @Test
        public void objMethodRef() {
            final Car police = Car.create( Car::new );
            final List< Car > cars = Arrays.asList( police );
    
            cars.forEach( police::follow );
        }
    }
  • 相关阅读:
    js基础知识(pomelo阅读)
    nohup启动命令(转)
    JS基础知识(数组)
    JS基础知识(作用域/垃圾管理)
    JS基础知识(基本类型 引用类型)
    html5实现饼图和线图-我们到底能走多远系列(34)
    RK3288 device descriptor read/64, error -32
    RK3288 双屏异显,两屏默认方向不一致
    Android 查看Android版本的方法
    adb error: device offline
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9284638.html
Copyright © 2011-2022 走看看