gpt4 book ai didi

java - 绕过 if 语句中的相似变量重复

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:17 29 4
gpt4 key购买 nike

我相信我对避免代码重复这个长期存在的问题提出了一个略有不同的看法。设置相当标准——一堆 if 语句执行类似的操作。下面是一个简短示例。

我正在尝试从代码效率、紧凑性和程序员易用性方面找出解决此类情况的最佳方法。请注意,解决这些问题中的每一点的单独解决方案都很好,而且确实更可取,因为我怀疑一个解决方案是否能解决所有这三个问题。

例如,想到的一个可能的解决方案似乎是笨拙和缓慢的,特别是在像 android 这样的移动设备上,而且它只有在变量是实例变量时才有效,而不仅仅是局部变量(这可能非常好吧)。这个想法涉及一个 for 语句,其初始化表达式将使用双括号初始化来填充 HashMap ,其中包含与所涉及变量相对应的字符串(例如,“installText”映射到“installPermission”),然后 for 循环将包含一个 if- -else-if--else-if 下面的子句,这将使用反射来通过存储在 hashmap 中的变量名访问变量。

我怎样才能做得更好?提前感谢您的宝贵时间和建议!

if (installText.equals("Default")) {
installPermission = DEFAULT;
} else if (installText.equals("Allow")) {
installPermission = ENABLED;
} else if (installText.equals("Disallow")) {
installPermission = DISABLED;
}
if (uninstallText.equals("Default")) {
uninstallPermission = DEFAULT;
} else if (uninstallText.equals("Allow")) {
uninstallPermission = ENABLED;
} else if (uninstallText.equals("Disallow")) {
uninstallPermission = DISABLED;
}
if (runText.equals("Default")) {
runPermission = DEFAULT;
} else if (runText.equals("Allow")) {
runPermission = ENABLED;
} else if (runText.equals("Disallow")) {
runPermission = DISABLED;
}

最佳答案

您使用的是 Java 7 吗?在这种情况下,您可以使用现在支持 String 值的 switch 语句:

switch(installText) {
case "Allow":
installPermission = ENABLED;
break;
case "Disallow":
installPermission = DISABLED;
break;
case "Default":
installPermission = DEFAULT;
break;
default:
installPermission = DEFAULT;
break;
}

关于java - 绕过 if 语句中的相似变量重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434939/

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