我试图在谓词中循环枚举以返回我需要的正确值。
这就是我要做的事情:
private Predicate<Item> isCorrectItem() {
for (Thing thing : Thing.values()) {
return item -> item.getId() == thing.getNumber();
}
}
除了java想要在循环之外返回之外。在循环之后返回null不会对我有任何好处。我问,我该怎样做才能避免两次返回或者避免首先迭代枚举?如果没有,那是什么 我应该回来吗?
答案 0 :(得分:0)
如果Item
在number
中匹配enum Thing
时可以使用
private Predicate<Item> isCorrectItem() {
return item -> Arrays.stream(Thing.values()).anyMatch(thing -> thing.getNumber() == item.getId());
}
是正确的
(eg: 100-101)
答案 1 :(得分:0)
@ garnulf的答案(或@Tinaki's?)是正确的,但仅针对上下文,这是你在问题中可能的意思:
private Predicate<Item> isCorrectItem() {
return item -> {
for (Thing thing : Thing.values()) {
if (item.getId() == thing.getNumber()) {
return true;
}
}
return false;
};
}