java8的方法引用

方法引用

方法引用通过方法的名字来指向一个方法。

方法引用可以使语言的构造更紧凑简洁,减少冗余代码。

方法引用使用一对冒号 ::

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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());
}

public void follow(final Car another) {
System.out.println("应该是this与传进来的对象比较" + another.toString());
}

public void repair() {
System.out.println("私有方法 " + this.toString());
}
}

可以先这么写:

1
2
3
4
5
6
Car car = Car.create(new Supplier<Car>() {
@Override
public Car get() {
return new Car();
}
});

在IDE中,把鼠标移动new Supplier上,可以看到一个黄色的小灯,点击小灯,出现两个选项一个是替换为lambda表达式,一个是替换为方法引用。

1
Car car = Car.create(() -> new Car());
1
Car car = Car.create(Car::new);

构造器引用:它的语法是Class::new

1
Car car = Car.create(Car::new);

静态方法引用:它的语法是Class::static_method

1
2
final List<Car> cars = Arrays.asList(new Car());
cars.forEach( Car::collide );

特定类的任意对象的方法引用:

1
cars.forEach( Car::repair );

特定对象的方法引用:

1
2
final Car police = Car.create( Car::new );
cars.forEach( police::follow );

java8的方法引用
http://hanqichuan.com/2023/08/23/java/java8的方法引用/
作者
韩启川
发布于
2023年8月23日
许可协议