避免用三元素侵犯DRY?

时间:2015-10-27 01:23:45

标签: java dry ternary-operator

这就是我所拥有的。

Map data = new HashMap<>(); // assume this has been populated

public int getLastestVersion() {
    // data.get("PATH_TO_DESIRED_POINT") would be an integer
    return data.get("PATH_TO_DESIRED_POINT") == null ? 0 : (int)data.get("PATH_TO_DESIRED_POINT");
}

我试图避免违反DRY,但我希望能够保持三元的简单性。有什么我可以做的吗?

2 个答案:

答案 0 :(得分:4)

如果您使用的是Java8,则可以使用getOrDefault方法:

return data.getOrDefault("PATH_TO_DESIRED_POINT", 0);

答案 1 :(得分:2)

您可以将结果分配给Map<String, Integer> data局部变量。这样编译器可以自由地内联它,并且您不必重复调用以进入final Integer v = data.get("PATH_TO_DESIRED_POINT"); return v != null ? v : 0; 。在Java 8+中,类似

Show the Attributes Inspector