gpt4 book ai didi

java - 如何将带参数的方法引用传递到 Arrays.stream 中?

转载 作者:行者123 更新时间:2023-11-30 07:46:12 28 4
gpt4 key购买 nike

我有一个来自接口(interface)的方法,它遍历一系列项目和增益并计算所有特定方法的总和,如下所示:

@Override
public float getDamageReduction(EntityPlayable playable) {
float bonus = (float) Arrays.stream(items).filter(Objects::nonNull).mapToDouble(Item::getDamageReduction(this)).sum();
float buffBonus = (float)buffs.stream().mapToDouble(Buff::getDamageReduction(this)).sum();
return bonus + buffBonus;
}

此代码不起作用,因为您无法 Buff::getDamageReduction(this),因为不允许您使用带参数的方法引用。

我该如何解决这个问题?

最佳答案

在这种情况下您不能使用方法引用。您可以改为编写 lambda 表达式。

float bonus = (float) Arrays.stream(items)
.filter(Objects::nonNull)
.mapToDouble(item -> item.getDamageReduction(this))
.sum();

关于java - 如何将带参数的方法引用传递到 Arrays.stream 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916983/

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