почему его можно назвать Shipment::calculateWeight
? calculateWeight()
не принимает никаких параметров, хотя возвращает double
Его можно вызвать с помощью ссылки на метод, поскольку ссылка на метод представляет код для вызова метода calculateWeight
для shipment
, который принимается в качестве входных данных для Function<Shipment, Double>
. Прочитайте их для дальнейшей взаимосвязи -
shipment -> shipment.calculateWeight()
или далее
new Function<Shipment, Double>() {
@Override
public Double apply(Shipment shipment) {
return shipment.calculateWeight();
}
})
Я пытаюсь закомментироватьrateWeight (), но оставлю в расчетеWight (Отгрузка) s1), возникает ошибка msg
Теперь, если вы поняли вышеприведенное лямбда-представление, ссылка на метод невозможна без того, чтобы для вызывающего метода calculateWeight
требовалась пересылка, чтобы он был экземпляр, в котором метод будет вызываться , а другой, который должен быть , передается методу, который будет использоваться в качестве параметра . Это может быть что-то вроде -
shipment -> shipment.calculateWeight(shipment1)
Обратите внимание, преобразование метода в static
, например
public static double calculateWeight(Shipment s1)
, приведет к выводу ссылки на метод для принятия экземпляр как сам параметр и будет работать как:
List<Double> lw = shipment1.calculateOnShipments(l, Shipment::calculateWeight)
, где Shipment::calculateWeight
представляет shipment -> calculateWeight(shipment)
.