gpt4 book ai didi

java - 从 lambda 表达式返回值?

转载 作者:行者123 更新时间:2023-12-02 03:59:39 25 4
gpt4 key购买 nike

基本上,我正在开发一个 Java 接口(interface)系统,我的接口(interface)是由组件组成的。请记住,我使用的是 OpenGL,因此标准监听器不可用。

基本上我需要做的是找出界面的“点击” boolean 值之一是否返回true,这是我编写的代码(希望成功)

if(Interface.interfaces.forEach((k, v)->v._clicked())) {
}

但是,这是不允许的。我的所有接口(interface)都是抽象的,并存储在 HashMap<> 中.

基本上我想做的是:

if(!Interface.interfaces.forEach((k, v)->v._clicked())) {
// Handle game related code
}

其中_clicked()方法(在执行一些逻辑后调用抽象 void clicked())将处理接口(interface)相关代码,因此不需要 else 语句。其总体概念是使其单击聊天框等不会使我的玩家与游戏世界互动。

我有大量的接口(interface),因此以一种漂亮、整洁的方式迭代它们会很好。

如果我不能在这里使用 lambda,那是非常不幸的,我知道我可以使用 for/each Entry<> 来做到这一点,但由于纯粹的丑陋,我想避免它。

最佳答案

按照建议,如果您只需要确定是否有任何接口(interface)从 `clicked() 返回 true,则使用:

Interface.interfaces.values().stream().anyMatch(Interface::_clicked))

请注意,尽管这可能会短路,但如果其中一个 _clicked() 调用返回 true,则可能不会评估其他调用。如果单击的调用有副作用,这可能不是您想要的。

为了确保评估所有点击的调用,您可以使用:

Interface.interfaces.stream().map(Interface::_clicked).reduce(false, (a, b) -> a || b);

关于java - 从 lambda 表达式返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27714502/

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