标签:lambda 方法调用 system code util class each repair tor
一、方法引用
方法引用使得开发者可以直接引用现存的方法、Java类的构造方法或者实例对象。方法引用和Lambda表达式配合使用,使得java类的构造方法看起来紧凑而简洁,没有很多复杂的模板代码。
例子中,Car类是不同方法引用的例子,可以帮助读者区分四种类型的方法引用。
package com.study.demo.TestRefernce; import java.util.Arrays; import java.util.List; import java.util.function.Supplier; public class Car { private String name ="I am a car"; @Override public String toString() { return "Car{" + "name=‘" + name + ‘\‘‘ + ‘}‘; } public static Car create(final Supplier< Car > supplier ) { return supplier.get(); } public static void collide( Car car ) { System.out.println( "Collided " + car.toString() ); } public void follow( Car another ) { System.out.println( "Following the " + another.toString() ); } public void repair() { System.out.println( "Repaired " + this.toString() ); } public static void main(String[] args) { final Car car = Car.create(Car::new); final List< Car > cars = Arrays.asList( car ,Car.create(Car::new)); cars.forEach(Car::collide ); cars.forEach(Car::repair); final Car car1 = Car.create(Car::new); cars.forEach(car1::follow); } }
final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car );
cars.forEach( Car::collide );
cars.forEach( Car::repair );
final Car police = Car.create( Car::new ); cars.forEach( police::follow );
运行上述例子,可以在控制台看到如下输出(Car实例可能不同):
标签:lambda 方法调用 system code util class each repair tor
原文地址:https://www.cnblogs.com/wangzhuxing/p/10204612.html