gpt4 book ai didi

java - Java 8 中的方法引用

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:59 24 4
gpt4 key购买 nike

public class Car {

private int maxSpeed;

public Car(int maxSpeed) {
this.maxSpeed = maxSpeed;
}

public int getMaxSpeed() {
return maxSpeed;
}
}

我们可以对汽车列表进行排序,

    Car carX = new Car(155);
Car carY = new Car(140);

List<Car> cars = new ArrayList<>();
cars.add(carX);
cars.add(carY);

cars.sort(Comparator.comparing(Car::getMaxSpeed));

如果我们看到方法的签名 Comparator.comparing ,入参类型为Function<? super T, ? extends U>

在上面的例子中,Car::getMaxSpeed 是怎样的?被转换到Function<? super T, ? extends U>而以下不编译?

  Function<Void, Integer> function = Car::getMaxSpeed;

最佳答案

那是因为 getMaxSpeed方法是 Function<Car, Integer> .

即:

<Car, Integer> Comparator<Car> java.util.Comparator.comparing(
Function<? super Car, ? extends Integer> keyExtractor
)

注意

为了引用getMaxSpeed来自 Car 的实例与 ::成语,你必须声明一个Car带有签名的方法:getMaxSpeed(Car car) .

关于java - Java 8 中的方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com