gpt4 book ai didi

Java:如何通过字符串内容选择/调用函数?

转载 作者:行者123 更新时间:2023-12-05 09:06:31 24 4
gpt4 key购买 nike

我有一个列表和函数。

我想迭代列表并调用匹配列表元素的函数。我怎样才能以比在 if 或 switch 中比较名称更优雅的方式做到这一点?

class C
{
String [] lst = {"foo", "bar", "zoo"};

void foo () { /* ... */ }
void bar () { /* ... */ }

void NotSoElegant ()
{
for (String s : lst)
{
if (s.equals ("foo") == true)
{ foo (); }
if (s.equals ("bar") == true)
{ bar (); }
}
}
}

最佳答案

我强烈建议不要在这种情况下使用反射 - 这显然是代码异味,它破坏了代码的安全性并可能导致许多问题和缺点 - 想想如果有人将 NotSoElegant 在列表中。

当然还有methods to fetch method by name所以基本上你可以扫描类,通过字符串获取方法,处理异常......不要这样做。

基本上,拥有这样一组 ifs 并没有什么不好,但是您可以使用 switch 语句稍微重构一下

for (String s : lst) {
switch(s) {
case "foo":
foo();
break;
case "bar":
bar();
break;
}
}

如果你想更坚定地提示并且不违反开放-关闭规则,你应该考虑使用一些设计模式(比如 Strategy )但不要使用反射:)

关于Java:如何通过字符串内容选择/调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65915977/

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