jdk的lamble表达式:
第一种方法引用是构造器引用,它的语法是Class::new,或者更一般的Class< T >::new。请注意构造器没有参数。
final Car car = Car.create( Car::new );
final List< Car > cars = Arrays.asList( car );
第二种方法引用是静态方法引用,它的语法是Class::static_method。请注意这个方法接受一个Car类型的参数。
解释:cars,forEach遍历的元素,是Car类中静态方法collide的入参。注意:可以不是Car类,可以使其他类的方法,但一定是静态方法,入参是cars,forEach遍历的元素。
cars.forEach( Car::collide );
第三种方法引用是特定类的任意对象的方法引用,它的语法是Class::method。请注意,这个方法没有参数。
解释:可以调用任意方法,但方法没有入参。为什么一般是cars.forEach遍历元素类的方法,因为一般里面是对该类的操作。
cars.forEach( Car::repair );
最后,第四种方法引用是特定对象的方法引用,它的语法是instance::method。请注意,这个方法接受一个Car类型的参数
final Car police = Car.create( Car::new );
cars.forEach( police::follow );