如何将 Optional<Object> 转换为 Optional<String>
How to convert Optional<Object> to Optional<String>
我在 Java 11
中有此代码
Object a = getObjectOrNullIfNotAvailable();
String value = a==null ? null : a.toString();
我想使用 Optional 编写此代码,我能想到的最好的是。我没试过 运行 但我怀疑它会起作用
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
Optional<String> oas = oa.map(a -> a.toString());
String value = oas.orElse(null);
除了 运行 可选映射之外,我还有什么办法可以完成此操作。我希望得到类似下面代码的东西,但这不起作用
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
String value = oa.ifPresentOrElse(a -> a.toString(), a -> null);
从方法的 return 值创建一个 Optional 似乎有点尴尬。而是首先让您的 getObjectOrNullIfNotAvailable()
方法 return 成为一个 Optional。然后使用 map
运算符将其转换为字符串。这是它的样子。
Optional<Object> oa = someOptionalReturningMethod();
String value = oa.map(Object::toString).orElse(null);
出于某种原因,如果您无法将方法的 return 值更改为 Optional
,只需保留使用三元运算符的命令式解决方案即可。没有错。
String value = a==null ? null : a.toString();
您可以使用 map
,然后使用 orElse
,无需像这样将它们分开:
String value = Optional.ofNullable(a)
.map(Object::toString)
.orElse(null);
使用:
String value = Optional.ofNullable(getObjectOrNullIfNotAvailable()).map(Object::toString).orElse(null);
否则,您可以检查一个对象是否为空,在这种情况下 return 是一个带有 "null" 的字符串,其中包含 String.valueOf(Object obj) 或 Objects.toString(对象对象)。例如
String value = Objects.toString(getObjectOrNullIfNotAvailable())
我在 Java 11
中有此代码Object a = getObjectOrNullIfNotAvailable();
String value = a==null ? null : a.toString();
我想使用 Optional 编写此代码,我能想到的最好的是。我没试过 运行 但我怀疑它会起作用
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
Optional<String> oas = oa.map(a -> a.toString());
String value = oas.orElse(null);
除了 运行 可选映射之外,我还有什么办法可以完成此操作。我希望得到类似下面代码的东西,但这不起作用
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
String value = oa.ifPresentOrElse(a -> a.toString(), a -> null);
从方法的 return 值创建一个 Optional 似乎有点尴尬。而是首先让您的 getObjectOrNullIfNotAvailable()
方法 return 成为一个 Optional。然后使用 map
运算符将其转换为字符串。这是它的样子。
Optional<Object> oa = someOptionalReturningMethod();
String value = oa.map(Object::toString).orElse(null);
出于某种原因,如果您无法将方法的 return 值更改为 Optional
,只需保留使用三元运算符的命令式解决方案即可。没有错。
String value = a==null ? null : a.toString();
您可以使用 map
,然后使用 orElse
,无需像这样将它们分开:
String value = Optional.ofNullable(a)
.map(Object::toString)
.orElse(null);
使用:
String value = Optional.ofNullable(getObjectOrNullIfNotAvailable()).map(Object::toString).orElse(null);
否则,您可以检查一个对象是否为空,在这种情况下 return 是一个带有 "null" 的字符串,其中包含 String.valueOf(Object obj) 或 Objects.toString(对象对象)。例如
String value = Objects.toString(getObjectOrNullIfNotAvailable())