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。
我是 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。