abh*_*tia 3 java optional java-8 java-11
我在Java 11中有此代码
Object a = getObjectOrNullIfNotAvailable();
String value = a==null ? null : a.toString();
Run Code Online (Sandbox Code Playgroud)
我想使用Optional编写此代码,我能想到的最好的方法是。我没有尝试运行它,但我怀疑它会起作用
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
Optional<String> oas = oa.map(a -> a.toString());
String value = oas.orElse(null);
Run Code Online (Sandbox Code Playgroud)
除了在可选组件上运行map之外,我还有什么想法可以实现此目的。我希望有类似下面的代码,但这行不通
Optional<Object> oa = Optional.ofNullable(getObjectOrNullIfNotAvailable());
String value = oa.ifPresentOrElse(a -> a.toString(), a -> null);
Run Code Online (Sandbox Code Playgroud)
Rav*_*ala 10
从方法的返回值中创建Optional似乎有些尴尬。而是让您的getObjectOrNullIfNotAvailable()方法首先返回Optional。然后使用map运算符将其转换为字符串。这是它的外观。
Optional<Object> oa = someOptionalReturningMethod();
String value = oa.map(Object::toString).orElse(null);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,如果您不能将方法的返回值更改为Optional,只需使用三元运算符保留命令式解决方案即可。没有错。
String value = a==null ? null : a.toString();
Run Code Online (Sandbox Code Playgroud)
用:
String value = Optional.ofNullable(getObjectOrNullIfNotAvailable()).map(Object::toString).orElse(null);
Run Code Online (Sandbox Code Playgroud)
否则,您可以检查对象是否为空并在这种情况下返回一个带有“空”的字符串,其中包含 String.valueOf(Object obj) 或 Objects.toString(Object obj)。例如。
String value = Objects.toString(getObjectOrNullIfNotAvailable())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |