public class MyMethodInterfer {
@Test
public void test1 () {
Car car = Car.create(Car::new);
List< Car > cars = Arrays.asList( car );
//调用静态方法:Class::static_method,接受一个参数
cars.forEach( Car::collide );
//调用成员方法:Class::method,不接受参数
cars.forEach( Car::repair );
//实例方法的引用:instance::method,接受一个参数
Car otherCar = Car.create(Car::new);
cars.forEach(otherCar::follow);
}
private static class Car {
public static Car create(final Supplier<Car> supplier) {
return supplier.get();
}
public static void collide(final Car car) {
System.out.println(car.toString() + " collide!");
}
public void follow( final Car another) {
System.out.println( "Following the " + another.toString() );
}
public void repair() {
System.out.println( "Repaired " + this.toString());
}
}
}