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();
}
これは機能しません
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()はここでは機能しないと思いますか?
ラムダで最初のものを使用すると、「NoSuchElementException:値がありません」という例外が発生します。
結果がない可能性があり、NPEと同じくらい悪くなるがスローされるためget
、を呼び出すことは想定されていません。または代わりに使用できます。Optional
NoSuchElementException
Optional.map
Optional.isPresent
findFirst
要素が見つかる保証がないため、オプションを返します。
イテレータは異なり、少なくとも1つの要素がある場合にのみ反復します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加