public static double getAttackSpeed(ItemStack item) {
Attributes ab = new Attributes(item);
for(Attributes.Attribute attribute : ab.values())
Flawlord.log(attribute.getName());
return FlawlordHelper.stream(ab.values()).filter(a -> a.getAttributeType().equals(Attributes.AttributeType.GENERIC_ATTACK_SPEED)).findFirst().get().getAmount();
}
這並不工作的Java 8迭代流過濾器NoSuchElementException異常
public static int getDamage(ItemStack item) {
Attributes ab = new Attributes(item);
int dmg = 0;
for(Attributes.Attribute attribute : ab.values())
if (attribute.getAttributeType() == Attributes.AttributeType.GENERIC_ATTACK_DAMAGE)
dmg = (int) attribute.getAmount();
return dmg;
}
這個作品
打招呼。有人可以向我解釋爲什麼後者有效,但首先不是?也許我只是沒有得到它,idk。我想也許.equals()在這裏不起作用?
如果我使用lambda的第一個,我得到一個異常「NoSuchElementException:沒有值存在」。
我們怎麼知道?什麼是'FlawlordHelper'? 'findFirst()'的代碼是什麼? – UDKOX
這只是意味着沒有值與謂詞匹配,並且您試圖在缺少的'Optional'上調用'get()'。 –
第二個*「工作」*以什麼方式?它是否不會崩潰或它爲「速度」產生價值? – luk2302