Java中有三元赋值运算符吗?

Is there a ternary assignment operator in Java?

我是 Java 的新手,我正在尝试检查变量是否为 null,如果不是,则使用它的值。以前的开发者是这样写的:

xModel.setName(xService.getName(xID) != null ? xService.getName(xID) : "");

而且我想重构它,这样我就不必两次使用 xService 来获取名称。

我知道我可以预先存储值,但这只是一个例子。我只是想知道在 Java?

中是否有办法做到这一点

谢谢。

你拥有的已经是最好的内核了Java pre Java8。从8开始,你可以使用optionals:

xModel.setName(Optional.ofNullable(xService.getName(xID)).orElse(""));

Objects.toString​( Object o, String nullDefault )

在这种特殊情况下,您可以使用 java.util.Objects.toString。第二个参数是在第一个参数为 null 的情况下使用的默认值。

xModel.setName(Objects.toString(xService.getName(x.ID), ""));

我不同意所有其他答案。它们需要特定版本的特殊功能,方法是从标准库中导入结构,或者在这种特定情况下使用模糊的调用,总而言之,只是隐藏了您尝试做的事情的简单性。

保持简单 (KISS)。不要在不需要的时候引入更多的复杂性和概念。您正在重构另一个开发人员的代码,这意味着这是一个其他人稍后可能会阅读您的代码的项目。所以保持简单。

String name = xService.getName(xID);
xModel.setName(name != null ? name : "");

这比所有其他示例都更具可读性,并且不需要深入了解标准库及其 API。