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 );
        }
    }
  • 相关阅读:
    file_put_contents 和php://input 实现存储数据进图片中
    Oracle PL/SQL游标的学习
    三层的再理解
    取出字符串中任意的顺序匹配
    oracle的正则表达式(regular expression)简单介绍
    oracle动态游标的简单实现方法
    存储过程之游标笔记小结
    char,varchar,nvarchar的区别
    大连惊魂记
    让asp.net默认的上传组件支持进度条反映(转)
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9284638.html
Copyright © 2011-2022 走看看