gpt4 book ai didi

java - 将许多 "else if"替换为其他内容

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

我正在使用 ActionListener 并有很多 else if 语句,以便知道按下了哪个按钮并根据按钮运行一些代码。

有没有办法让代码变得更好?我有近 10 个 else if 语句,我可以使用其他语句来代替吗?

代码示例:

class BtnListener implements ActionListener {   
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == menu.getOpen()) {
getFile();
} else if (e.getSource() == btnPlay) {

} else if (e.getSource() == btnQuit)) {
}
}

谢谢。

最佳答案

您可以填写Map<Object, Consumer<ActionEvent>>在使用监听器之前,例如在构造函数中,其中 key 是 source值(value)是行动事件的消费者。在实际操作中,只需通过按键获取消费者并调用它即可。

class BtnListener implements ActionListener {
Map<Object, Consumer<ActionEvent>> eventsMap = new HashMap<>();

public BtnListener() {
eventsMap.put(menu.getOpen(), actionEvent -> this.getFile());
eventsMap.put(btnPlay, actionEvent -> { //do something
});
eventsMap.put(btnQuit, actionEvent -> { //do something else
});
}

@Override
public void actionPerformed(ActionEvent e) {
Optional.of(e)
.map(ActionEvent::getSource)
.map(eventsMap::get)
.ifPresent(
actionEventConsumer -> actionEventConsumer.accept(e)
);
}
}

关于java - 将许多 "else if"替换为其他内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42020589/

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