避免违反三元的DRY?

Avoid violation of DRY with ternary?

这是我的。

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,但我希望能够保持三元的简单性。有什么我可以做的吗?

您可以将结果分配给 final 局部变量。这样编译器就可以自由地内联它,并且您不必重复调用即可进入 Map<String, Integer> data。在 Java 8+ 中,类似于

final Integer v = data.get("PATH_TO_DESIRED_POINT");
return v != null ? v : 0;

如果你正在使用Java8,你可以使用getOrDefault方法:

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