java - 缩短 switch case 方法

标签 java

我正在寻找缩短我的方法的可能性。

看起来像:

public static Optional<String> which(int i) {
        switch (i) {
        case 1:
            return Optional.of(_strArray[0]);
        case 2:
            return Optional.of(_strArray[1]);
        case 6:
            if (bool)
                return Optional.of(_strArray[2]);
        case 7:
            if (!bool)
                return Optional.of(_strArray[3]);
        case 9:
            if (bool)
                return Optional.of(_strArray[3]);
        case 123:
            if (!bool)
                return Optional.of(_strArray[4]);
        case 154:
            if (bool)
                return Optional.of(_strArray[4]);
        //... and so on (lot's of cases)
        default: return Optional.empty();
}

如何使该方法更短? Java 8 有可能吗? 一个想法是采取 Map<Integer, Optional<String>> ,但是 Java 8 中没有初始化 map 的方法。

最佳答案

这看起来像“业务逻辑”——现实世界的案例。

使其具有声明性:作为数据结构/表格数据,甚至可能稍后与 boolean 逻辑一起在 XML 中定义。

然后“解释”数据。

这允许记录做出的决策、选择的案例。 有助于解释程序行为,因为一段时间后没有人会非常确定什么是正确的。

这里的问题不是效率,而是清晰度。仍然可以使用有效的数据结构。例如适当的 map 。

关于java - 缩短 switch case 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316399/

相关文章:

java - fragment 不会在 main_activity() 中被替换

java - 简化叉积 foreach 循环 - 也许使用 Lambda?

java - CommandInvokationFailure:Gradle构建失败。打开JDK错误

java - 在序列化期间忽略 Jackson JsonIdentityInfo

java - 代码似乎跳过了 if 或 for 循环

java - 当我运行程序时,我的 JVM 崩溃了

java - org.hibernate.PropertyNotFoundException : Could not find a getter for

java - 如何在 fragment 中实现 "next"按钮

java - 使用父类和子类声明新对象的方法之一的结果

java - 公历