Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

去年关闭。



Improve this question




我在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);

除了在可选组件上运行map之外,我还有什么想法可以实现此目的。我希望有类似下面的代码,但这行不通
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
String value = oa.ifPresentOrElse(a -> a.toString(), a -> null);

最佳答案

从方法的返回值中创建Optional似乎有点尴尬。而是让您的getObjectOrNullIfNotAvailable()方法首先返回Optional。然后使用map运算符将其转换为字符串。这是它的外观。

Optional<Object> oa = someOptionalReturningMethod();
String value = oa.map(Object::toString).orElse(null);

由于某种原因,如果您不能将方法的返回值更改为Optional,则只需使用三元运算符保留命令式解决方案。没有错。
String value = a==null ? null : a.toString();

关于java - 如何将Optional <Object>转换为Optional <String>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57730799/

10-15 11:29