gpt4 book ai didi

java - 如何将方法放入 map 中?

转载 作者:行者123 更新时间:2023-11-30 07:35:55 25 4
gpt4 key购买 nike

我有需要在其中查找括号的字符串 () , {} , []并使用堆栈检查正确性,如果有错误则打印错误的位置。因此,我将它们分成 char 数组,然后想逐个符号检查,如果它匹配,我的 map 就会执行我的从堆栈插入/弹出的方法。

我想象的是这样的:

ParentStack s = new ParentStack();
Map<Character, Method> map = new HashMap<Character, Method>();
map.put('(', s.push('('));
map.put(')', s.pop()); //then check if its opposite

那么有这样的事情吗?或者我必须使用开关?

最佳答案

由于 java 不是函数式编程语言(其中函数称为 first-class citizens ),因此无法通过引用传递函数。您可以做的是使用一种名为 execute() 的方法创建一个接口(interface)。然后,您为您想要的每个功能实现此接口(interface),并将它们放入映射中,您可以在其中轻松调用它们并执行这些“功能”。

public interface function{
void execute();
}

(在 java 8 中)你的代码可能看起来像这样:

ParentStack s = new ParentStack();
Map<Character, Method> map = new HashMap<Character, Method>();
map.put('(', (Function) () -> s.push('('));
map.put(')', (Function) () -> s.pop());

有些人甚至会这样写:

map.put('(', () -> s.push('('));

我认为这不太容易阅读,但这是一个偏好问题。

要执行您的函数,请使用:

map.get('(').execute();

关于java - 如何将方法放入 map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399369/

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