缩短开关案例方法

时间:2017-06-01 20:17:42

标签: 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中初始化地图。

2 个答案:

答案 0 :(得分:0)

您可以使用番石榴ImmutableMap

Map<Integer, String> left = ImmutableMap.of(1, "a", 2, "b", 3, "c");

答案 1 :(得分:0)

这看起来像“商业逻辑” - 真实案例。

使其成为声明性的:作为数据结构/表格数据,甚至可能在XML中定义,以及布尔逻辑。

然后“解释”数据。

这允许记录在何处做出决定,选择了哪种情况。 有助于解释程序行为,因为过了一段时间没有人会非常肯定正确的事情。

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